公钥获取和验签

企业服务平台的token,可以在应用系统的本地进行验签,这样的可以提升接口性能,不需要每次都进行验签。方案如下:

1、公钥获取;

公钥获取,做好缓存机制,下文有介绍,不需要频繁调用;

2、令牌验签;

使用平台公钥进行令牌验签,下文有介绍,可以加缓存机制;

配置描述

生产环境:https://esp.xkw.cn/.well-known/openid-configuration

沙箱测试环境:https://esp.doc.xkw.cn/.well-known/openid-configuration

 

公钥获取

生产环境:https://esp.xkw.cn/oauth2/jwks

沙箱测试环境:https://esp.doc.xkw.cn/oauth2/jwks

 

公钥缓存机制

应用系统API,接口提供方需要定期获取公钥配置,可以在应用系统启动时获取最新,后续可以定时任务进行更新可以两小时更新一次;

注意:不要频繁请求获取公钥,以免被限流控制;

 

令牌签名验证

平台公钥实例化

根据公钥接口获取最新公钥配置,实例化公钥实例,这个不同的开发语言写法不一样,可以参考网上文章,下面为java的例子代码:

 

令牌内容验证

使用公钥实例,结合jwt第三方库(nimbus-jose-jwt)进行签名验证,不同语言写法不一样,可以参考网上文章,下面为java的例子代码:

令牌缓存机制

第一次使用平台公钥验证通过后,存储在缓存中,缓存的过期时间使用令牌的过期时间,后面调用,取缓存,如下:

缓存KEY缓存VALUE过期时间
令牌token{
"sub": "oa",
"aud": "oa",
"nbf": 1710491527,
"scope": ["bi", "sales"],
"iss": "https://esp.doc.xkw.cn",
"exp": 1710491827,
"iat": 1710491527
}
令牌的exp