问题描述
假设我在身份验证服务器上注册了 2 个服务:
- 服务 A,带有
client-id=service-a-id
和client_secret=service-a-secret
- 服务 B,带有
client-id=service-b-id
和client_secret=service-b-secret
Auth Server 发出 JWT
现在服务 A 想要调用服务 B 并使用 client credentials
流。
哪些服务应该与其他服务共享它的 client_secret
?
如果服务 A 使用自己的秘密向身份验证服务器发送请求并获得令牌,那么 service-a-secret
应该与服务 B 共享,以便它可以验证 JWT 签名?
我很迷茫,因为 secret
假定除了身份验证服务器和所有者应用程序外不会与任何人共享。但是,如果Service B想在不调用Auth Server的情况下验证token,应该怎么做。
解决方法
好的,事实证明 Auth Server 使用自己的密钥对 JWT 进行签名,您无需知道任何人的秘密即可验证 JWT。虽然这很明显,但我从参考文献中不太明显。
因此,client_secret
不得与拥有其机密的身份验证服务器和应用程序以外的任何人共享。