Ouath2,0,Openid Connect 和IdentityService4 【第一章】
一.很多人或许对着三者还没有接触过,用过dotnetcore 可能会对dotnetcore 自带的identity的身份认证有些了解吧。这里可以很细化的短说
1.Ouath2.0 是只做授权的 (也有人把此叫做委托者,代理)这里需要明白的是accessToken是不带认证身份的信息的
2.Openid Connect 这个是基于Ouath2.0后的做的一个身份认证,这里又有人叫做为(openid)
以上还有疑问可以参照 https://openid.net/connect/ 的文档说明
3.IdentityService4 就是结合了Oauth2.0和Openid Connect认证框架 中文档:http://www.identityserver.com.cn/ 原档:https://identityserver4.readthedocs.io/en/latest/ 个人建议看原档比较好理解
二.验证方式 总结来说是五种(或许还有?) 图或字不好凑合看看吧
1.Client Credentials 不涉及到用户,靠的是Secret的客户端的凭证
2.resource owner password credentials
(1)资源所有者的密码,Secret凭证,直接请求accessToken
(2)通常用于遗留的应用
(3)资源所有者和客户端应用之间必须高度信任
(4)其它授权方式不可用的时候才使用,尽量不要使用
这里需要明白 IDP(Authorzation Server)有两个端点,一个是Authorization Endpoint(授权端点)和一个Token Endpoint(这个主要满足条件(账号密码都要一样,scope等等才能颁发正确的AccessToken))
得到的AccessToken 会下一步获取用户信息 交互动作都是通过 Authorization Endpoint 端点进行的,认证通过 Token Endpoint 端点进行的
3.Authorizion Code Flow 使用Authorizion Code Flow 保护Asp.net core Mvc客户端(为其做用户的身份认证)
(1)适用于保护保密客户端
(2)服务器端的web应用
(3)对用户和客户端进行身份认证
【对于下图的reference Token(刷新token不明白的下面再说明)】
4.Implict Flow
(1)用于‘公共’客户端
(2)最好是客户端应用可以直接从浏览器访问资源
(3)没有显示的客户端身份认证
5.Hybird Flow(重点) 说白了就是Authorization Code 和Implicit的结合
三.Refresh Token (刷新Token)
官方默认:Refresh Token的过期时间为1小时,但也可以根据自己需要的周期定,
jwtToken 没有提供直接的生命周期控制,信息自包含,验证无需与IDP通信
1 AllowOfflineAccess = true, // offline_access 2 AccessTokenLifetime = 60, // 60 seconds 默认是3600,可以自定义(这里设置1分钟)
若要转载请附上作者原文链接 https://www.cnblogs.com/hexsola1314/p/13823421.html Evan