web-dev-qa-db-fra.com

Mise à jour de System.IdentityModel.Tokens.Jwt provoquant une modification radicale du client IdentityServer3

Si tout va bien un facile à résoudre.

Le paquet System.IdentityModels.Tokens.Jwt de Microsoft a été mis à jour hier sur NuGet de 4.0.2.206211351 à v5.0. Ceci provoque malheureusement un changement radical avec un code "standard" IdentityServer3. c’est-à-dire tirés de leurs exemples de code, j’imagine donc que de nombreux développeurs verront ce problème au cours des prochains jours.

Code d'origine

en utilisant la version v4.0.2.xxxxxx du package. j'ai

using System.IdentityModel.Tokens;

dans l'espace de noms.

puis dans la méthode de configuration commence comme:

public void Configuration(IAppBuilder app)
    {
        AntiForgeryConfig.UniqueClaimTypeIdentifier = "sub";

        JwtSecurityTokenHandler.InboundClaimTypeMap = new Dictionary<string, string>();

        app.UseCookieAuthentication(new CookieAuthenticationOptions
        {
            AuthenticationType = "Cookies"
        });

        app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
        { ... };

Après la mise à jour

Après la mise à jour de la ligne de configuration:

JwtSecurityTokenHandler.InboundClaimTypeMap = new Dictionary<string, string>();

Cause un problème.

La première chose étant que la classe a apparemment été déplacée dans l'espace de noms System.IdentityModel.Tokens.Jwt, ce n'est pas si grave à résoudre.

Cependant, je reçois maintenant une erreur Object reference required for a non-static field sur le JwtSecurityTokenHandler.InboundClaimTypeMap.

Est-ce que je manque quelque chose ici, une autre bibliothèque qui est nécessaire ou est-ce qu'il se passe quelque chose avant que le Startup.Configuration() soit appelé qui doit creuser?

19
Ross Halliday

Quand vous allez chez le médecin et dites "ça fait toujours mal quand je fais ça" - le médecin répondra "alors arrête de faire ça";)

v4 -> v5 est par définition un changement radical. Avez-vous besoin de v5?

Cela étant dit - une simple exploration intellisense aurait évoqué le changement de leur nom, InboundClaimTypeMap à DefaultInboundClaimTypeMap.

Préparez-vous à d'autres changements radicaux en cours de route.

25
leastprivilege

La validation des jetons d'accès dans OWIN n'est pas compatible avec system.identitymodel v5 - vous devez rétrograder vers v4 - Voir la question ici

1
Todd Hirsh