Spring的默认OAuth JWT流(使用client_credentials许可)如下:为什么Spring的默认OAuth JWT实现将JWT验证程序公开?
- 启动的认证服务器(AS)
- 启动资源服务器(RS)
- 启动时,RS请求tokenKey通过使用基本认证
- 的AS返回使用RS256(SHA256withRSA) 公钥调用
- 一段时间后,客户端通过使用client_credentials授予
- 的AS返回包含一个JWS signature
- 所述客户端的JWT accessToken发送JWT作为承载的令牌至RS
- 的RS使用主叫
GET /oauth/token
请求一个的accessToken它在启动时从AS接收到的tokenKey,以验证JWT accessToken来自AS。这是我困惑的地方...
这种事情安全吗?为什么要使用公共证书而不是共享密钥?黑客不能轻易获得公钥并签署他们自己有效的JWT访问令牌吗?公钥证书和JWT签名的使用如何协同工作以验证发件人实际上是Auth服务器而不是攻击者?
任何见解都会有帮助。