2016-06-28 29 views
16

Çözümü kolay bir çözüm.System.IdentityModel.Tokens.Jwt Güncelleştirmesi, IdentityServer3 İstemcisi'nde bozulmaya neden oluyor

Microsoft'un System.IdentityModels.Tokens.Jwt paketi, NuTet'te 4.0.2.206211351'dan v5.0'a güncellendi. Bu maalesef bazı "standart" IdentityServer3 kodu ile bir kırılma neden oluyor. yani kod örneklerinden alınmıştır, bu yüzden önümüzdeki günlerde birkaç geliştiricinin bu sorunu görebileceğini hayal ediyorum.

Orjinal Kod

paketinin sürümünü v4.0.2.xxxxxx kullanarak. İsim alanında

var.

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

bir soruna neden mi:

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

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

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

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

confgiuration hattını güncelledikten sonra

Güncellenmesi sonra: olarak

sonra Configuration yöntem başlar.

Sınıftaki ilk şey, görünüşte System.IdentityModel.Tokens.Jwt ad alanına taşındı, bu çözmek için çok da kötü değil. Ancak, JwtSecurityTokenHandler.InboundClaimTypeMap adresinde Object reference required for a non-static field hata alıyorum.

Burada bir şey eksik miyim, gerekli olan başka bir kitaplık var mı? Startup.Configuration()'un içine girmesi gereken bir şey mi var? > V5 tanımı gereği bir kırılma değişikliktir -

v4); -

cevap

18

doktora gitmek ve "Böyle yapınca hep acıyor" demek doktor "o zaman bunu durdurma" cevap verecektir. V5'e ihtiyacınız var mı? Bu söyleniyor - basit bir intellisense keşif InboundClaimTypeMap için DefaultInboundClaimTypeMap olarak yeniden adlandırıldı.

Yolda daha fazla değişiklik yapılması için hazırlıklı olun. Owin içinde

+0

- çok teşekkürler sen v4 sürümüne gerekir. Ah, ... hayır henüz v5 için hazır değiliz, bu ilişkisiz bir hikaye başlamadan önce genel bir NuGet paketleri güncellemesi yapıyordum. Bir süre için temizlenmeyen Güncelleme Uyarıları ile yaşamak zorunda kalacağım. Bir anlamda bunun kolay bir düzeltme olduğuna sevindim; başka bir şey sormak için biraz daft hissediyorum ... Ama, sanırım bu bir cevabın içinde yazılım geliştirme :-) – user1820426

+0

En son sürümü (5.XX) kullanarak şimdi 'System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.DefaultInboundClaimTypeMap ' –

1

Erişim belirteci doğrulama system.identitymodel v5 ile uyumlu değildir - See issue here