2015-05-31 23 views
6

İstediğim, ASP.NET Çekirdeğinde JWT Üretimi ve JWT Tüketiminin bir yöntemidir.JWT Taşıyıcı Simge Akışı

OAuth2 akışı yok, IdentityServerv3'ün OAuth2 ile çalışmasına sahibim, ancak her iki tarafa da sahip olduğumda bir API'ye erişen tek bir uygulama için sadece bir overkill var.

Asıl sorun kaynağım, ASP.NET Core'daki Microsoft.Owin.Security.Jwt eşdeğerini bulmaktır. Bu listedeki hiçbir şey https://www.myget.org/gallery/aspnetvnext ile ilgili görünüyor. Veya bu paket aslında ASP.NET Core ile alakalı kalmak mı?

+0

https://gist.github.com/siacomuzzi/1832edeb905a9582a7dd:

Sen benim bu blog yayınında (github repo ilişkin bağlantılar dahil) bir tam boy bir açıklama görebilir? – adaam

+0

teşekkürler. Zaten bu konuya rastladım ve bu arada kullanıyordum ama sadece JWT tüketimi değil, nesil değil, asp.net5'te kullanımdan kaldırılmış görünen Microsoft.Owin paketlerini kullanıyor. Kullanılabilirler, sadece Microsoft.AspNet.Authentication'ı kullanmazlar, ki bu her şeyin yolunda gittiği yerlerdir. –

cevap

5

Kendi JWT simgelerinizi oluşturmak için (basit) bir yol arıyorsanız, doğrudan JwtSecurityTokenHandler'u kullanmalısınız. Sen söz MyGet depo üzerinde System.IdentityModel.Tokens pakette bulabilirsiniz (ama versiyon biraz geç eski) System.IdentityModel.Tokens.Jwt pakette, Azure AD depo üzerinde doğrudan ya: Standart bir protokol kullanarak Tabii https://www.myget.org/gallery/azureadwebstacknightly

, JWT token'larınızı vermek ve almak tavsiye edilir ve OAuth2 ve OpenID Connect bunun için muhtemelen en iyi adaylardır.

IdentityServer ASP.NET Ben şahsen Katana 3 ile gelir OAuth2 yetkilendirme sunucusu katman gelişmiş bir çatal üzerinde çalışıyorum 5. çalışır yalnızca sunucu değildir ve bu farklı bir yaklaşım getirdiğini Not: https://github.com/aspnet-contrib/AspNet.Security.OpenIdConnect.Server

app.UseOAuthBearerAuthentication(new JwtBearerOptions 
{ 
    AutomaticAuthenticate = true, 
    AutomaticChallenge = true, 
    Audience = "http://localhost:54540/", 
    Authority = "http://localhost:54540/" 
}); 

app.UseOpenIdConnectServer(options => 
{ 
    options.Provider = new AuthorizationProvider(); 
}); 

Ben http://kevinchalet.com/2016/07/13/creating-your-own-openid-connect-server-with-asos-introduction/ okumanızı öneririz, bu proje hakkında daha fazla bilgi edinmek için.

Daha fazla bilgiye ihtiyacınız olursa bana https://jabbr.net/#/rooms/AspNetCore numaralı ping'i göndermekten çekinmeyin.

+0

'JwtSecurityTokenHandler''ın son parametresi' SigningCredentials''dir. Ama bunun bir örneğini nasıl oluşturabilirim? – Sean

+0

@Sean http://stackoverflow.com/a/33531139/542757 – Pinpoint

2

OpenIddict'u kullanmaya başladım ve bence tam olarak ihtiyacınız olan şey bu.

ConfigureServices:

Bu gerekli tüm yapılandırma temelde

services.AddIdentity<ApplicationUser, ApplicationRole>() 
      .AddEntityFrameworkStores<ApplicationDbContext>() 
      .AddDefaultTokenProviders() 
      .AddOpenIddictCore<Application>(config => config.UseEntityFramework()); 

yapılandır

app.UseOpenIddictCore(builder => 
{ 
    // tell openiddict you're wanting to use jwt tokens 
    builder.Options.UseJwtTokens(); 
    // NOTE: for dev consumption only! for live, this is not encouraged! 
    builder.Options.AllowInsecureHttp = true; 
    builder.Options.ApplicationCanDisplayErrors = true; 
}); 

// use jwt bearer authentication 
app.UseJwtBearerAuthentication(options => 
{ 
    options.AutomaticAuthenticate = true; 
    options.AutomaticChallenge = true; 
    options.RequireHttpsMetadata = false; 
    options.Audience = "http://localhost:58292/"; 
    options.Authority = "http://localhost:58292/"; 
}); 

gibi bir veya iki diğer küçük şeyler vardır, senin DbContext'in OpenIddictContext<ApplicationUser, Application, ApplicationRole, string>'dan türetilmesi gerekiyor. http://capesean.co.za/blog/asp-net-5-jwt-tokens/