IdentityServer4 关于 AddIdentityServerAuthentication 方法
AddIdentityServerAuthentication
是 IdentityServer 官方封装的用于认证的方法,接入 ASP.NET Core 的认证机制,包含在组件 IdentityServer4.AccessTokenValidation
中。
在 ASP.NET Core 早期,1.1、2.0(2.0不确定,时间太久了)时 AddIdentityServerAuthentication 还是 IdentityServer 官方文档及示例代码提供的注册认证的方法,后面都变更为了:
services.AddAuthentication("Bearer")
.AddJwtBearer()
一度我曾经以为 AddIdentityServerAuthentication
无用了,现在我更正我的想法,这个方法同时支持了 Reference Token 和 JWT 的认证,所以说如果使用 Reference Token 还是要使用这个方法的。
当然,如果使用 JWT 的话还是推荐直接使用 AddJwtBearer ,这是微软官方提供的支持JWT的认证组件,不用额外安装 Nuget 包。
2020.10.15 再次更新
IdentityServer4.AccessTokenValidation 组件的 github 仓库已经存档了,然后我查询了官方文档,已经不使用这个组件了,对于 Reference Token 的验证,使用 https://github.com/IdentityModel/IdentityModel.AspNetCore.OAuth2Introspection
如果同时支持 JWT 和 Reference Token ,那么这样写:
services.AddAuthentication("token")
// JWT tokens
.AddJwtBearer("token", options =>
{
options.Authority = Constants.Authority;
options.Audience = "resource1";
options.TokenValidationParameters.ValidTypes = new[] { "at+jwt" };
// if token does not contain a dot, it is a reference token
options.ForwardDefaultSelector = Selector.ForwardReferenceToken("introspection");
})
// reference tokens
.AddOAuth2Introspection("introspection", options =>
{
options.Authority = Constants.Authority;
options.ClientId = "resource1";
options.ClientSecret = "secret";
});
相关资料:
https://docs.identityserver.io/en/latest/topics/apis.html
https://docs.identityserver.io/en/latest/topics/reference_tokens.html
目前学习.NET Core 最好的教程 .NET Core 官方教程 ASP.NET Core 官方教程