Skoruba.IdentityServer4 相关

目的:重新梳理下,记录下来。

下面 身份认证、Token颁发服务器简称 “IDS”

1.认证,基于Cookie的认证方式

  IdentityServer4采用Cookie认证方式

  

   

   

   IdentityServer4基于Asp.net Core Cookie认证方案之上建立自己的cookie认证方案(默认Cookie认证方案、外部Cookie认证方案)

  登录时,记住密码Cookie默认过期时间14天

  

2.非对称加密

  IDS 通过保有私钥,公开公钥

  通过私钥生成JWT的签名,通过公钥校验JWT的签名(Signature 部分是对前两部分Header、Payload的签名,防止数据篡改。)

  公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法

   自制证书地址 https://www.cnblogs.com/leon-ytparty/articles/10418980.html

  

   地址 https://hexquote.com/creating-self-signing-certificates-for-identityserver/

  Token(JWT)

  IDS生成Token,其中的签名使用 “私钥生成” 加密 。

  当某一个Client拿着 “私钥生成”  的Token访问 API资源时,API资源向 IDS 的公开文档(.well-known)获取 “ 公钥 ”(一般情况下,未重启情况下,只会获取一次),Api通过公钥校验Token中的签名(Token中Payload部分,也可以校验)。

3.登录流程

  不选择 “记住我” 

  A.用户通过Client “重定向” 到IDS -> 用户输入账密(或第三方账密校验)-> 生成Cookie加入Response中响应给该Client的用户  -> 后续生成、返回Token

  B.在浏览器上新开一个Tab。用户通过Client “重定向” 到IDS -> 校验附带在Request中的Cookie -> 校验成功,表示认证成功,不需要输入账密了  -> 后续生成、返回Token

  关闭浏览器后Cookie失效。重新走A的流程。

  选择 “记住我” 

  1.走A的流程,生成的Cookie默认有效期14天。

  关闭浏览器后Cookie不失效。走B的流程。

  这也就是为什么在同一个浏览器上开多个Client “重定向”到同一个IDS,不需要重新登录的原因。

  

posted @ 2022-09-19 22:12  youliCC  阅读(136)  评论(0编辑  收藏  举报