在不往返授权服务器的情况下检查访问令牌的有效性?

Posted

技术标签:

【中文标题】在不往返授权服务器的情况下检查访问令牌的有效性?【英文标题】:Checking the validity of access tokens without round tripping to the authorization server? 【发布时间】:2018-02-19 03:30:12 【问题描述】:

使用 oauth 访问令牌的有效性必须由授权服务器检查。有没有办法做到这一点,而无需对资源服务器的每个请求都往返授权服务器?我已经对 JWT 进行了一些阅读,似乎因为 JWT 可以签名,它应该能够由资源服务器验证而无需访问授权服务器? IIUC 是否有一些标准/简单的方法可以使用 spring security oauth 做到这一点?

【问题讨论】:

【参考方案1】:

JWT 不需要回调授权服务器。您可以使用:

1) 用于签署和验证 JWT 令牌的客户端密钥。密钥将存储在授权服务器和您的应用程序中。

2) 或者最好使用 JWK 等私钥/公钥来签名和验证令牌。私钥将存储在您的应用程序中的授权服务器端和公共令牌中。您可以选择从授权服务器获取公钥,将其缓存并在一段时间后刷新。更多信息请见https://github.com/spring-projects/spring-security-oauth/blob/master/spring-security-oauth2/src/main/java/org/springframework/security/oauth2/provider/token/store/jwk/JwkTokenStore.java。

【讨论】:

以上是关于在不往返授权服务器的情况下检查访问令牌的有效性?的主要内容,如果未能解决你的问题,请参考以下文章

我可以在不注册我的自动测试应用程序的情况下在 Azure 上获取访问令牌吗?

是否可以在没有刷新令牌的情况下检查 JWT 有效性?

API 网关如何通过自省验证访问令牌

OAuth 2.0实现分布式认证授权-jwt令牌和普通令牌的区别

Firebase 消息:我可以在不调用浏览器提示的情况下检查用户是不是已经拥有令牌?

如何在不使用谷歌应用的情况下授权谷歌驱动服务账户访问谷歌账户?