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
作者:晓晨Master(李志强)
出处:https://www.cnblogs.com/stulzq/p/13095412.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
目前学习.NET Core 最好的教程 .NET Core 官方教程 ASP.NET Core 官方教程
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!