【IdentityServer4】AccessToken生成、验证流程 您所在的位置:网站首页 Token签名无效 【IdentityServer4】AccessToken生成、验证流程

【IdentityServer4】AccessToken生成、验证流程

2024-06-29 20:46| 来源: 网络整理| 查看: 265

AccessToken类型

IdentityServer4 Token有两种类型Jwt 、Reference ,默认使用 JWT 类型。在配置 Client 客户端的时候 指定Token类型。

public enum AccessTokenType{Jwt = 0,Reference = 1}

Reference Token的特点是 Token 的有效与否是由 Token 颁发服务集中化控制的,颁发的时候会持久化 Token,然后每次验证都需要将 Token 传递到颁发服务进行验证,是一种中心化的验证方式。JWT Token的特点与前者相反,每个资源服务不需要每次都要都去颁发服务进行验证 Token 的有效性验证,仅仅是获取公钥用于验证签名,且该公钥获取以后可以自己缓存,持续使用,不用再去交互获得,除非数字证书发生变化。

AccessToken生成 1、Ids4的加密方式

Ids4目前使用的是RS256非对称方式,使用私钥进行签名,然后客户端通过公钥进行验签。 Ids4默认使用临时证书来进行token的生成,使用代码 .AddDeveloperSigningCredential(),这里会自动给生成tempkey.rsa证书文件 在生产环境我们最好使用自己配置的证书。使用如下方式添加证书:

.AddSigningCredential(new X509Certificate2(Path.Combine(basePath,"test.pfx"),"123456")); AccessToken验证 Jwt类型

当使用 AccessTokenType 类型为 Jwt Token 时候,就会使用 Jwt 规范来生成 Token,签名的算法是采用 RSA ,在服务端 IdentityServer4 使用私钥对 Token 进行签名,当客户端去资源端获取资源的时候,API 端(资源服务器)收到第一个请求后去服务端获得公钥然后验签(调用/.well-known/openid-configuration/jwks获取公钥这个过程只发生在客户端第一次请求,所以当服务端更换证书,资源端也需要重启服务)。一般开发环境使用 AddDeveloperSigningCredential 方法使用临时证书即可(先判断 tempkey.rsa 文件是否存在,如果不存在就创建一个新的文件 )。 流程:

Token签名验签需要一对私钥和公钥,不过IdentityServer为开发者提供了一个AddDeveloperSigningCredential()方法,它会帮我们搞定这个事,并默认存到硬盘中。当切换到生产环境时,还是得使用正儿八经的证书,更换为使用AddSigningCredential()方法。

Refrence类型

当使用 Reference token 的时候,服务端会对 Token 进行持久化,当客户端请求资源端(API)的时候,资源端需要每次都去服务端通信去验证 Token 的合法性[/connect/introspect],IdentityServer4.AccessTokenValidation 中间件中可以配置缓存一定的时候去验证,并且 Token 是支持撤销[/connect/revocation]的。 token验证: API 端(资源服务器)需要每次去访问 IdentityServer4 服务端来验证 Token 的合法性(POST /connect/introspect),当然 API 端也可以配置一定的时间来缓存结果,以减少通信的频率。

.AddIdentityServerAuthentication(options => { // base-address of your identityserver options.Authority = "https://demo.identityserver.io"; //name of the API resource options.ApiName = "api1"; options.ApiSecret = "secret"; options.EnableCaching = true; options.CacheDuration = TimeSpan.FromMinutes(10); //that's the default })


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有