JWT 不记名令牌流程
JWT Bearer Token Flow
我想要的是ASP.NET Core中JWT生成和JWT消费的方法。
没有 OAuth2 流程,我确实有 IdentityServerv3 与 OAuth2 一起工作,但是当我拥有双方时,它对于访问 API 的单个应用程序来说太过分了。
我遇到的主要困难是在 ASP.NET Core 中找到 Microsoft.Owin.Security.Jwt 的等价物。此列表 https://www.myget.org/gallery/aspnetvnext 中没有任何内容似乎相关。还是该软件包实际上与 ASP.NET Core 保持相关性?
如果您正在寻找一种(简单的)方法来生成您自己的 JWT 令牌,您应该直接使用 JwtSecurityTokenHandler
。您可以在您提到的 MyGet 存储库的 System.IdentityModel.Tokens
包中找到它(但现在版本有点旧)或直接在 Azure AD 存储库中,在 System.IdentityModel.Tokens.Jwt
包中: https://www.myget.org/gallery/azureadwebstacknightly
当然,使用标准协议来发布和检索您的 JWT 令牌比推荐的要多,OAuth2 和 OpenID Connect 可能是最好的选择。
请注意 IdentityServer 不是唯一可以在 ASP.NET 上运行的服务器 5. 我个人正在开发 OAuth2 授权服务器中间件的高级分支使用 Katana 3 并提供不同的方法: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();
});
要了解有关此项目的更多信息,我建议阅读 http://kevinchalet.com/2016/07/13/creating-your-own-openid-connect-server-with-asos-introduction/。
如果您需要更多信息,请随时通过 https://jabbr.net/#/rooms/AspNetCore 联系我。
我已经开始使用 OpenIddict,我认为这正是您所需要的。
这基本上就是我需要的所有配置:
配置服务:
services.AddIdentity<ApplicationUser, ApplicationRole>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders()
.AddOpenIddictCore<Application>(config => config.UseEntityFramework());
配置
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/";
});
还有一两件小事,比如你的 DbContext 需要派生自 OpenIddictContext<ApplicationUser, Application, ApplicationRole, string>
。
您可以在我的博客 post 上看到完整的解释(包括指向 github 存储库的链接):
http://capesean.co.za/blog/asp-net-5-jwt-tokens/
我想要的是ASP.NET Core中JWT生成和JWT消费的方法。
没有 OAuth2 流程,我确实有 IdentityServerv3 与 OAuth2 一起工作,但是当我拥有双方时,它对于访问 API 的单个应用程序来说太过分了。
我遇到的主要困难是在 ASP.NET Core 中找到 Microsoft.Owin.Security.Jwt 的等价物。此列表 https://www.myget.org/gallery/aspnetvnext 中没有任何内容似乎相关。还是该软件包实际上与 ASP.NET Core 保持相关性?
如果您正在寻找一种(简单的)方法来生成您自己的 JWT 令牌,您应该直接使用 JwtSecurityTokenHandler
。您可以在您提到的 MyGet 存储库的 System.IdentityModel.Tokens
包中找到它(但现在版本有点旧)或直接在 Azure AD 存储库中,在 System.IdentityModel.Tokens.Jwt
包中: https://www.myget.org/gallery/azureadwebstacknightly
当然,使用标准协议来发布和检索您的 JWT 令牌比推荐的要多,OAuth2 和 OpenID Connect 可能是最好的选择。
请注意 IdentityServer 不是唯一可以在 ASP.NET 上运行的服务器 5. 我个人正在开发 OAuth2 授权服务器中间件的高级分支使用 Katana 3 并提供不同的方法: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();
});
要了解有关此项目的更多信息,我建议阅读 http://kevinchalet.com/2016/07/13/creating-your-own-openid-connect-server-with-asos-introduction/。
如果您需要更多信息,请随时通过 https://jabbr.net/#/rooms/AspNetCore 联系我。
我已经开始使用 OpenIddict,我认为这正是您所需要的。
这基本上就是我需要的所有配置:
配置服务:
services.AddIdentity<ApplicationUser, ApplicationRole>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders()
.AddOpenIddictCore<Application>(config => config.UseEntityFramework());
配置
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/";
});
还有一两件小事,比如你的 DbContext 需要派生自 OpenIddictContext<ApplicationUser, Application, ApplicationRole, string>
。
您可以在我的博客 post 上看到完整的解释(包括指向 github 存储库的链接): http://capesean.co.za/blog/asp-net-5-jwt-tokens/