2016-06-28 20 views
16

Hy vọng rằng một cách dễ dàng để giải quyết.Cập nhật của System.IdentityModel.Tokens.Jwt gây ra sự thay đổi đột phá trong IdentityServer3 Client

Gói System.IdentityModels.Tokens.Jwt của Microsoft đã được cập nhật ngày hôm qua trên NuGet từ 4.0.2.206211351 đến v5.0. Rất tiếc, điều này gây ra thay đổi đột phá với một số mã "chuẩn" IdentityServer3. tức là lấy từ mẫu mã của họ vì vậy tôi tưởng tượng một vài nhà phát triển có thể thấy vấn đề này trong những ngày tới.

Mã gốc

sử dụng phiên bản v4.0.2.xxxxxx của gói. Tôi có

using System.IdentityModel.Tokens; 

trong không gian tên.

sau đó trong cấu hình phương pháp bắt đầu như:

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

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

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

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

Sau khi cập nhật

Sau khi cập nhật dòng confgiuration:

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

là gây ra sự cố.

Điều đầu tiên là lớp, dường như đã chuyển vào không gian tên System.IdentityModel.Tokens.Jwt, điều này không quá khó giải quyết.

Tuy nhiên, hiện tôi nhận được lỗi Object reference required for a non-static field trên JwtSecurityTokenHandler.InboundClaimTypeMap.

Tôi có thiếu gì đó ở đây không, một thư viện khác được yêu cầu hoặc có điều gì đó xảy ra trước khi số Startup.Configuration() được gọi là cần đào sâu vào?

Trả lời

18

Khi bạn đi khám bác sĩ và nói "nó luôn luôn đau khổ khi tôi làm điều này" - bác sĩ sẽ trả lời "sau đó dừng lại làm điều này";)

v4 -> v5 là theo định nghĩa một sự thay đổi phá vỡ. Bạn có cần v5 không?

Điều đó đang được nói - một khám phá đơn giản intellisense sẽ đưa ra rằng họ đổi tên thành InboundClaimTypeMap thành DefaultInboundClaimTypeMap.

Hãy chuẩn bị để có thêm các thay đổi đột phá trong quá trình thực hiện.

+0

Rất cám ơn. Ah, ... không có chúng tôi chưa sẵn sàng cho v5, đây là tôi đang cập nhật các gói NuGet chung trước khi bắt đầu một câu chuyện không liên quan. Tôi sẽ phải sống với những Update Alerts đó không bị xóa trong một thời gian. Theo một nghĩa nào đó, tôi rất vui vì đó là một sửa chữa dễ dàng; trong một tôi cảm thấy một chút daft cho yêu cầu ... Nhưng, tôi cho rằng đó là phát triển phần mềm trong một nutshell :-) – user1820426

+0

Sử dụng phiên bản mới nhất (5.XX) nó bây giờ là 'System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.DefaultInboundClaimTypeMap ' –

1

Tiếp cận xác nhận thẻ trong OWIN không tương thích với system.identitymodel v5 - bạn cần phải hạ xuống v4 - See issue here

Các vấn đề liên quan