2016-06-28 15 views
16

Si spera che sia facile risolverlo.Aggiornamento di System.IdentityModel.Tokens.Jwt che causa una modifica anomala nel client IdentityServer3

Il pacchetto Microsoft System.IdentityModels.Tokens.Jwt è stato aggiornato ieri su NuGet da 4.0.2.206211351 a v5.0. Questo sfortunatamente sta causando un cambio di rottura con un codice "standard" IdentityServer3. cioè presi dai loro esempi di codice quindi immagino che parecchi sviluppatori potrebbero vedere questo problema nei prossimi giorni.

codice originale

utilizzando v4.0.2.xxxxxx versione del pacchetto. Ho

using System.IdentityModel.Tokens; 

nel namespace.

poi nella configurazione metodo inizia come:

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

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

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

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

dopo l'aggiornamento

Dopo aver aggiornato la linea confgiuration:

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

sta causando un problema.

La prima cosa è che la Classe si è trasferita apparentemente nello spazio dei nomi System.IdentityModel.Tokens.Jwt, ma non è così difficile da risolvere.

Tuttavia, ora sto ottenendo un errore Object reference required for a non-static field su JwtSecurityTokenHandler.InboundClaimTypeMap.

Mi manca qualcosa qui, un'altra libreria richiesta o c'è qualcosa che accade prima che venga chiamato lo standard Startup.Configuration()?

risposta

18

Quando si va dal medico e dire "mi fa male sempre quando faccio questo" - il medico risponderà "poi fermarsi a fare questo";)

v4 -> v5 è per definizione un cambiamento di rottura. Hai bisogno di V5?

Detto questo, una semplice esplorazione intellisense avrebbe sollevato il fatto che hanno cambiato il nome InboundClaimTypeMap in DefaultInboundClaimTypeMap.

Preparatevi per ulteriori cambiamenti di rottura lungo il percorso.

+0

Molte grazie. Ah, ... no, non siamo ancora pronti per la v5, questo sono stato io a fare un aggiornamento generale dei pacchetti NuGet prima di iniziare una storia non correlata. Dovrò vivere con quegli Update Alert che non vengono cancellati per un po '. In un certo senso sono contento che sia una soluzione facile; in un altro mi sento un po 'stupido per averlo chiesto ... Ma suppongo che sia lo sviluppo del software in poche parole :-) – user1820426

+0

Usando l'ultima versione (5.XX) è ora 'System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.DefaultInboundClaimTypeMap ' –

1

accesso convalida token nel OWIN non è compatibile con system.identitymodel v5 - è necessario effettuare il downgrade a v4 - See issue here

Problemi correlati