webentwicklung-frage-antwort-db.com.de

Aktualisierung von System.IdentityModel.Tokens.Jwt, was zu einer grundlegenden Änderung im IdentityServer3-Client führt

Hoffentlich leicht zu lösen.

Das System.IdentityModels.Tokens.Jwt-Paket von Microsoft wurde gestern auf NuGet von 4.0.2.206211351 zu v5.0 aktualisiert. Dies führt leider zu einer grundlegenden Änderung mit einigen "Standard" IdentityServer3-Codes. d. h. aus ihren Codebeispielen entnommen. Ich denke, dass einige Entwickler dieses Problem in den nächsten Tagen sehen werden.

Ursprünglicher Code

v4.0.2.xxxxxx-Version des Pakets verwenden. ich habe

using System.IdentityModel.Tokens;

im Namensraum.

dann in der Konfigurationsmethode beginnt als:

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

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

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

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

Nach dem Update

Nach dem Aktualisieren der Bestätigungszeile:

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

Verursacht ein Problem.

Die erste Sache ist, dass die Klasse anscheinend in den System.IdentityModel.Tokens.Jwt-Namespace verschoben wurde. Dies ist nicht so schlecht zu lösen.

Ich erhalte jedoch jetzt einen Object reference required for a non-static field-Fehler in JwtSecurityTokenHandler.InboundClaimTypeMap.

Fehlt mir hier etwas, eine andere Bibliothek, die benötigt wird, oder passiert etwas, bevor Startup.Configuration() aufgerufen wird, in das eingegraben werden muss?

19
Ross Halliday

Wenn du zum Arzt gehst und sagst "es tut immer weh, wenn ich das mache" - der Arzt wird antworten "und dann aufhören";)

v4 -> v5 ist per definitionem eine entscheidende Änderung. Benötigen Sie v5?

Davon abgesehen, hätte eine einfache intelligente Untersuchung ergeben, dass sie InboundClaimTypeMap in DefaultInboundClaimTypeMap umbenannten.

Seien Sie auf weitere bahnbrechende Änderungen vorbereitet.

25
leastprivilege

Die Validierung von Zugriffstokens in OWIN ist nicht kompatibel mit system.identitymodel v5 - Sie müssen auf v4 downgraden - Siehe Problem hier

1
Todd Hirsh