TokenValidationParameters升级到5.0.0后不再工作



我有下面的代码,这是工作时,我使用 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

然而,正在进行的工作来解决这个问题。时间线尚未设置

相关内容

  • 没有找到相关文章

最新更新