我有下面的代码,这是工作时,我使用 System.IdentityModel.Tokens。Jwt, Version = 4.0.20622.1351
private static void ConfigureAzureAD(IAppBuilder appBuilder)
{
appBuilder.UseWindowsAzureActiveDirectoryBearerAuthentication(
new WindowsAzureActiveDirectoryBearerAuthenticationOptions
{
Tenant = ConfigurationManager.AppSettings["ida:Tenant"],
TokenValidationParameters = new System.IdentityModel.Tokens.TokenValidationParameters
{
ValidAudience = ConfigurationManager.AppSettings["ida:Audience"]
}
});
}
然而,当我将这个包升级到最新的版本5时,它不再编译报错对类型"TokenValidationParameters"的引用声明它在System.IdentityModel.Token.Jwt中定义,但找不到它。
如果你尝试下面的编译器会警告你Audience是过时的:
private static void ConfigureAzureAD(IAppBuilder appBuilder)
{
appBuilder.UseWindowsAzureActiveDirectoryBearerAuthentication(
new WindowsAzureActiveDirectoryBearerAuthenticationOptions
{
Tenant = ConfigurationManager.AppSettings["ida:Tenant"],
Audience = ConfigurationManager.AppSettings["ida:Audience"]
});
}
我再次降级此DLL并使用4.0.20622.1351版本,它开始编译。
配置Azure活动目录是否有语法更改?
在Github上,我找不到一个使用最新包5.0.0的项目,所有这些项目都使用以前的包4.0.20622.1351。有人可以使用最新的System.IdentityModel.Tokens来阐明这一点吗?Jwt 5.0.0或者使用最新的包指导我到Github上的一些项目?
TokenValidationParameters is in assembly: Microsoft.IdentityModel.Tokens
看起来你正在使用Katana (asp.net OWIN提供的第一个版本)。武士刀不支持5.0.0。你需要坚持使用4.x。
最新版本的asp.net依赖于S.IM.xx和M.IM.xxx 5.0。https://github.com/aspnet
短版本:请确保使用Microsoft 4.0或更高版本。拥有自己的软件包,如Microsoft.Owin.Security.Jwt.
正如其他答案所提到的,System.IdentityModel.Tokens.Jwt从4.0版本到5.0版本发生了重大变化。这导致了一些问题,因为一些软件包如Microsoft.IdentityModel.Protocols依赖于5.0版本,而旧的Katana/OWIN软件包如Microsoft.Owin.Security.Jwt仍然硬编码为依赖于4.0版本。
好消息是这个问题在新的武士刀4.0版本中被修复了。4.0包(如Jwt和Cookies)已经作为预发布包发布到NuGet,并将很快作为稳定包发布。我不知道何时或是否会修复,但我希望它会。我已经在Github网站上发布了这些问题,用于AAD扩展和武士刀网站。你可以跟随这些网站上的讨论和进展,如果你愿意,你可以随时发布你对看到这个地址的兴趣。
我不明白为什么这在发布之前没有被视为一个问题。"升级到。net Core"并不是一个合理的解决方案。我的应用程序在很长一段时间内没有机会这样做,就像大多数非琐碎项目一样。
所以我今天也遇到了同样的问题。仔细看了一下,我想我知道答案了。
简而言之,这是与Katana项目(http://katanaproject.codeplex.com/)未能遵守Windows Azure Active Directory IdentityModel Extensions for .Net (https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet)的当前变化的问题
关于更多细节,TokenValidationParameters在system . identitymodel . token . jwt版本4.0中存在,但在5.0版本中被移除了。它的新家现在在汇编中Microsoft.IdentityModel.Tokens.
对不起,我不能提供一个修复它是一个设计的变化,从Katana代码库需要大幅重构。
武士刀目前不支持5。x版本的IdentityModel。https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet
然而,正在进行的工作来解决这个问题。时间线尚未设置