oauth - 共享 client_secret

问题描述

假设我在身份验证服务器上注册了 2 个服务:

  1. 服务 A,带有 client-id=service-a-idclient_secret=service-a-secret
  2. 服务 B,带有 client-id=service-b-idclient_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 不得与拥有其机密的身份验证服务器和应用程序以外的任何人共享。