我已经开始使用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>
.
您可以在我的这篇博文中看到完整的解释(包括指向 github 存储库的链接):http:
//capesean.co.za/blog/asp-net-5-jwt-tokens/