升级到5.0.0后,TokenValidationParameters不再有效

时间:2016-06-30 10:02:13

标签: c# azure azure-web-sites azure-active-directory

我有以下代码在我使用时正常工作 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"]
            }
        });
}

但是,只要我将此软件包升级到最新版本version 5,它就不再编译抱怨 引用类型'TokenValidationParameters'声明它在System.IdentityModel.Token.Jwt中定义,但无法找到它。

此外,如果您尝试以下编译器将警告您受众已过时

 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 Active Directory是否有语法更改?

在Github上,我找不到使用最新软件包5.0.0的单个项目,所有这些项目都使用以前的软件包4.0.20622.1351。任何人都可以使用最新的 System.IdentityModel.Tokens.Jwt 5.0.0 来阐明这一点,或者使用最新的软件包将我引导到Github上的一些项目?

5 个答案:

答案 0 :(得分:28)

TokenValidationParameters在程序集中:Microsoft.IdentityModel.Tokens

看起来您正在使用Katana(asp.net OWIN产品的第一个版本)。 Katana不支持5.0.0。你需要坚持4.x。

最新版本的asp.net依赖于S.IM.xx和M.IM.xxx 5.0。 https://github.com/aspnet

答案 1 :(得分:15)

简短版本:确保使用版本4.0或更高版本的Microsoft.Owin软件包,例如Microsoft.Owin.Security.Jwt

正如提到的其他答案一样,System.IdentityModel.Tokens.Jwt从版本4.0到5.0发生了重大变化。这导致了问题,因为像Microsoft.IdentityModel.Protocols这样的一些软件包依赖于5.0版本,而像Microsoft.Owin.Security.Jwt这样的旧版Katana / OWIN软件包依旧硬编码依赖于版本4.0。

好消息是,在新的Katana 4.0版本中,这是being fixed。 4.0包(例如JwtCookies)已作为预发布包发布到NuGet,并将很快作为稳定包提供。

答案 2 :(得分:7)

我不知道何时或是否会解决这个问题,但我希望能解决。我已经在Github site上针对AAD扩展和Katana site发布了这些问题。您可以关注这些网站上的讨论和进展,如果您愿意,您可以随时发布您对此问题的兴趣。

我无法理解在发布之前这不是一个问题。 "升级到.Net Core"不是一个合理的解决方案。我的应用程序暂时没有机会这样做,大多数非平凡的项目也是如此。

答案 3 :(得分:4)

所以我今天也遇到了同样的问题。俯视它的底部后,我想我知道答案。

简而言之,Katana项目(http://katanaproject.codeplex.com/)未能遵守.Net(https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet)的Windows Azure Active Directory IdentityModel扩展的当前更改

的问题

有关更多详细信息,TokenValidationParameters位于System.IdentityModel.Tokens.Jwt程序集版本4.0中,但它已在5.0版中移出。它的新家现在是汇编Microsoft.IdentityModel.Tokens。

抱歉,我无法提供修复,这是一项设计更改,Katana代码库需要从中进行重大修改。

答案 4 :(得分:0)

Katana目前无法使用5.x版本的IdentityModel。 https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet

然而,正在努力解决这个问题。时间轴尚未确定。

相关问题