&引用;提供的授权授权无效”;使用刷新令牌时,WSO2为5.2.0

&引用;提供的授权授权无效”;使用刷新令牌时,WSO2为5.2.0,wso2,wso2is,wso2carbon,Wso2,Wso2is,Wso2carbon,我最近将我的环境从WSO2 IS 5.0.0更新为WSO2 IS 5.2.0。我的环境由一台部署在EC2 AWS实例上的机器组成。我使用的是MySQL(不是默认的H2数据库)。部署的计算机是Windows Server 2012 R2。 我使用密码授予类型来获取特定用户的访问令牌,并存储刷新令牌,以便在需要时能够发出另一个访问令牌。我正在执行以下请求以获取访问令牌: 发布 配置适当的授权基本标头 之后,我使用刷新令牌来发布新的访问令牌。例如: 发布 配置适当的授权基本标头 在我以2-5秒的间

我最近将我的环境从WSO2 IS 5.0.0更新为WSO2 IS 5.2.0。我的环境由一台部署在EC2 AWS实例上的机器组成。我使用的是MySQL(不是默认的H2数据库)。部署的计算机是Windows Server 2012 R2。
我使用密码授予类型来获取特定用户的访问令牌,并存储刷新令牌,以便在需要时能够发出另一个访问令牌。我正在执行以下请求以获取访问令牌:
发布

配置适当的授权基本标头
之后,我使用刷新令牌来发布新的访问令牌。例如:
发布

配置适当的授权基本标头
在我以2-5秒的间隔多次执行邮差的最新POST呼叫后,在第一次5-7次呼叫后,我开始收到以下错误响应:

{  
 "error": "invalid_grant",  
 "error_description": "Provided Authorization Grant is invalid"  
}  
我希望收到新的访问令牌,而不是收到上面提到的错误。然后,我通过更新以下行来修改log4j.properties:

log4j.logger.org.wso2.carbon.identity=DEBUG
log4j.logger.org.wso2.carbon.identity.application=DEBUG
log4j.logger.org.wso2.carbon.identity.mgt=DEBUG
log4j.logger.org.wso2.carbon.identity.oauth2=DEBUG
log4j.logger.org.wso2.carbon.identity.provisioning=DEBUG
log4j.logger.org.wso2.carbon.identity.user.account.association=DEBUG
log4j.logger.org.wso2.carbon.identity.user.profile.mgt=DEBUG
然后我启动IS并再次尝试上述场景,这是我在日志文件中收到的:

[2016-11-15 21:29:18,873] DEBUG     {org.wso2.carbon.identity.oauth2.OAuth2Service} -  Access Token request received for Client ID GCFfyPSGkykWG4zQTKoDp8NEvjIa, User ID null, Scope :   [openid] and Grant Type : refresh_token
[2016-11-15 21:29:18,873] DEBUG {org.wso2.carbon.identity.oauth2.token.handlers.clientauth.AbstractClientAuthHandler} -  Can authenticate with client ID and Secret. Client ID: GCFfyPSGkykWG4zQTKoDp8NEvjIa
[2016-11-15 21:29:18,873] DEBUG {org.wso2.carbon.identity.oauth2.token.handlers.clientauth.AbstractClientAuthHandler} -  Grant type : refresh_token Strict client validation set to : null
[2016-11-15 21:29:18,873] DEBUG {org.wso2.carbon.identity.oauth2.util.OAuth2Util} -  Client credentials were available in the cache for client id : GCFfyPSGkykWG4zQTKoDp8NEvjIa
[2016-11-15 21:29:18,873] DEBUG {org.wso2.carbon.identity.oauth2.util.OAuth2Util} -  Successfully authenticated the client with client id : GCFfyPSGkykWG4zQTKoDp8NEvjIa
[2016-11-15 21:29:18,873] DEBUG {org.wso2.carbon.identity.oauth2.token.handlers.grant.RefreshGrantHandler} -  Access Token is not in 'ACTIVE' or 'EXPIRED' state for Client with Client Id : GCFfyPSGkykWG4zQTKoDp8NEvjIa
[2016-11-15 21:29:18,873] DEBUG {org.wso2.carbon.identity.oauth2.token.AccessTokenIssuer} -  Invalid Grant provided by the client Id: GCFfyPSGkykWG4zQTKoDp8NEvjIa
[2016-11-15 21:29:18,873] DEBUG {org.wso2.carbon.identity.oauth2.token.AccessTokenIssuer} -  OAuth-Error-Code=invalid_grant client-id=GCFfyPSGkykWG4zQTKoDp8NEvjIa grant-type=refresh_token scope=openid
有关更多信息,请查看整个日志文件:

是否有人遇到过类似的问题,这可能是IS中的错误,还是由某种错误配置引起的?
我看了一下,但找不到问题的直接答案。
我只是想提一下,我曾尝试每秒发出一个请求,并尝试了5分钟的间隔,但无法重现该问题。当请求频率足够高时,似乎会发生这种情况。
提前感谢。

根据和您的日志,访问令牌既不处于“活动”状态,也不处于“过期”状态。您可以在
IDN\u OAUTH2\u ACCESS\u token
表中查找该特定令牌。这会给你一个错误的提示

更新: 我分析了你的数据集。问题在于,由于您已多次发送相同的令牌请求,因此此表中有许多条目的
token\u STATE=INACTIVE
。在TIME_CREATED列中有两个条目具有相同的时间戳(即2016-11-17 11:40:02),这恰好是所有条目中最新的一个。因此,当IS尝试选择最新的令牌(理想情况下应该是活动令牌)时,db服务器返回2个令牌。但他只能挑一个。因为时间戳相同,所以它可以是这2个中的任何一个。因此,当它选择不活动的一个时,您应该看到上面的错误


理想情况下,IS应该妥善处理这一问题。但是作为一个解决方案,如果您不经常发送相同的请求,您应该能够消除错误。只需发送一个请求并等待响应即可。如果需要花费大量时间,则需要分析和解决另一个问题。

OAuthProblemException{error='invalid\u request',description='Missing参数:refresh\u token',uri='null',state='null',scope='null',redirectUri='null',responseStatus=0,parameters={}您发送的刷新令牌请求有问题吗?我正在发送完全相同的请求,并且多次都没有问题,当同一请求在短时间内执行时(例如,2-5秒内执行10次请求),它突然开始返回“错误”:“无效的授权”。我不认为这个请求有什么问题,因为每次都是一样的。当涉及到刷新令牌时,我会使用以下配置:falsePlease,找到下面提到的关于有问题的刷新令牌的表快照链接:访问令牌处于过期、非活动或活动状态。但真正的问题是,我不能使用完全相同的刷新令牌来生成新的访问令牌。我正在使用以下配置:false,它应该允许我使用相同的刷新令牌生成访问令牌,但我收到“错误”:“无效的\u授权”在某个点更新了答案