在访问令牌到期时,我遇到了一个特殊的问题,其中有时我的呼叫失败并出现401错误(访问令牌已过期)。如您所料,我应该通过OAuth2TokenRelayFilter使用refresh_token授予新的令牌。这一直有效到令牌停止刷新的特定时间点为止。奇怪的是,我检查发现过期的令牌不是以前使用的令牌,它是程序运行时发布的第一个令牌。 任何帮助将不胜感激。
答案 0 :(得分:2)
访问令牌有一些到期时间。但是您可以在服务提供商级别配置访问令牌的到期时间。
请参考本文档,以在服务提供商级别https://docs.wso2.com/display/IS580/Configuring+OAuth2-OpenID+Connect+Single-Sign-On中配置访问令牌和刷新令牌的到期时间
当当前访问令牌过期或需要新的访问令牌时,可以使用刷新令牌授予。当使用刷新授权来获取访问令牌时,将刷新刷新令牌。在WSO2身份服务器中,为具有新的到期时间的刷新授权发布了新的刷新令牌,并且先前的刷新令牌已变为非活动状态,无法再使用。
有一个 RenewRefreshTokenForRefreshGrant 配置可禁用identity.xml文件中的此属性。默认情况下,此 RenewRefreshTokenForRefreshGrant 配置处于启用状态。
由于此,对于每个刷新授权请求,先前的刷新令牌将变为非活动状态,并且将使用新的访问令牌来发行新的刷新令牌。如果您不想为每个请求续订刷新令牌,则可以按以下方式禁用identity.xml文件中的配置。由于具有此 RenewRefreshTokenForRefreshGrant 属性,如果您使用以前发行的刷新令牌,则该令牌将变为非活动状态,并且无法使用该刷新令牌来刷新以进一步访问令牌。
<RenewRefreshTokenForRefreshGrant>false</RenewRefreshTokenForRefreshGrant>
请参考本文档以进一步了解刷新令牌https://docs.wso2.com/display/IS580/Refresh+Token+Grant