web-dev-qa-db-fra.com

TokenValidationParameters ne fonctionne plus après la mise à niveau vers la version 5.0.0

J'ai le code suivant qui fonctionnait quand j'utilisais 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"]
            }
        });
}

Cependant, dès que j'ai mis à jour ce paquetage avec le dernier - version 5 , il ne compile plus les références compliquées au type 'TokenValidationParameters', qui le définit comme défini dans System.IdentityModel.Token.Jwt mais ne pouvait pas être trouvé.

Aussi, si vous essayez le compilateur suivant, vous serez averti que Audience obsolète :

 private static void ConfigureAzureAD(IAppBuilder appBuilder)
    {
        appBuilder.UseWindowsAzureActiveDirectoryBearerAuthentication(
            new WindowsAzureActiveDirectoryBearerAuthenticationOptions
            {
                Tenant = ConfigurationManager.AppSettings["ida:Tenant"],
                Audience = ConfigurationManager.AppSettings["ida:Audience"]
            });
    }

J'ai rétrogradé this DLL encore une fois et utilisé la version 4.0.20622.1351, la compilation a commencé.

Une modification de syntaxe a-t-elle été apportée à la configuration d'Azure Active Directory?

Sur Github, je ne pouvais pas trouver un seul projet utilisant le dernier paquet 5.0.0 et tous utilisaient le paquet précédent 4.0.20622.1351. Quelqu'un peut-il faire la lumière sur ceci en utilisant le dernier System.IdentityModel.Tokens.Jwt 5.0.0 ou me diriger vers un projet sur Github en utilisant le dernier paquet ?

53
MHOOS

TokenValidationParameters est dans Assembly: Microsoft.IdentityModel.Tokens

Il semble que vous utilisiez Katana (la première version de l'offre asp.net OWIN). Katana ne supporte pas la version 5.0.0. Vous devez vous en tenir à 4.x.

La dernière version de asp.net prend une dépendance de S.IM.xx et M.IM.xxx 5.0. https://github.com/aspnet

29
Brent Schmaltz

Version abrégée: Assurez-vous d'utiliser la version 4.0 ou ultérieure des packages Microsoft.Owin, tels que Microsoft.Owin.Security.Jwt .


Comme mentionné dans les autres réponses, il y avait un changement radical dans System.IdentityModel.Tokens.Jwt de la version 4.0 à la version 5.0. Cela posait des problèmes car certains packages tels que Microsoft.IdentityModel.Protocols dépendaient de la version 5.0, tandis que les anciens packages Katana/OWIN tels que Microsoft.Owin.Security.Jwt étaient encore codés en dur. sur la version 4.0.

La bonne nouvelle est que cela est en cours de correction dans la nouvelle version 4.0 de Katana. Les packages 4.0 (tels que Jwt et Cookies ) ont été publiés sur NuGet en tant que packages préliminaires et seront bientôt disponibles sous forme de packages stables.

16
Nate Barbettini

Je ne sais pas quand ni si cela sera résolu un jour, mais j'espère que ce sera le cas. J'ai déjà posté ces problèmes sur le site Github pour les extensions AAD et sur le site Katana . Vous pouvez suivre les discussions et les progrès sur ces sites et, si vous le souhaitez, vous pouvez toujours afficher votre intérêt à voir cette question traitée.

Je ne comprends pas pourquoi cela n'a pas été considéré comme un problème avant la publication. "Upgrade to .Net Core" n'est pas une solution raisonnable. Mon application n'a aucune chance de le faire pendant un bon moment, comme le font la plupart des projets non triviaux.

7
ChrisW

Donc, je vis aussi le même problème aujourd'hui. Après avoir regardé au fond, je pense connaître la réponse.

En bref, le problème avec le projet Katana ( http://katanaproject.codeplex.com/ ) n'a pas été conforme aux modifications actuelles des extensions IdentityModel Active Directory de Windows Azure pour .Net ( https://github.com/AzureAD/Azure-activedirectory-identitymodel-extensions-for-dotnet )

Pour plus de détails, TokenValidationParameters était présent dans System.IdentityModel.Tokens.Jwt Assembly version 4.0, mais il a été déplacé dans la version 5.0. La nouvelle maison correspondante est maintenant dans Assembly Microsoft.IdentityModel.Tokens.

Désolé, je ne peux pas vous fournir de solution. Il s'agit d'une modification de conception à partir de laquelle la base de code Katana doit être radicalement refondue.

5
Thuc Nguyen

Katana ne fonctionnera pas actuellement avec la version 5.x d'IdentityModel. https://github.com/AzureAD/Azure-activedirectory-identitymodel-extensions-for-dotnet

Cependant, des travaux sont en cours pour résoudre ce problème. La chronologie n'est pas encore définie.

0
Brent Schmaltz