JWT令牌SSO流程

5

我有一个关于JWT单点登录流程的简单问题。

假设我们有一个独立的授权服务器,向客户端应用/服务器和资源服务器提供JWT令牌,客户端试图使用该令牌访问资源服务器。

enter image description here

问题是,资源服务器应该自己验证令牌(例如与认证服务器共享私有证书),还是应该在每个客户端请求中请求认证服务器验证JWT?
1个回答

4

JWT规范的设计考虑了可伸缩性。JWT的设计目的是任何受信任的应用程序都可以验证签名块。如果您关心性能,则可以使用SHA-256 HMAC,并在每个端点上使用共享密钥本地验证签名。对于JWT使用非对称签名会增加开销,但您可以将公钥存储在验证但不发行JWT的端点上,然后将私钥存储在发行令牌的中央机构上。验证和发行之间的关注点分离降低了令牌创建过程被对手破坏的可能性(即:深度防御)。

如果您需要实时撤销令牌,则需要一个中央机构来验证每个令牌。这可以工作,但会破坏JWT的设计目的,此时系统最好只发行加密用途的nonce作为令牌。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接