刷新令牌返回无效的授权类型

时间:2016-03-14 04:34:10

标签: wso2 wso2is

我正在尝试刷新从wso2身份服务器获取的访问令牌(基于https://docs.wso2.com/display/IS510/Refresh+Token+Grant);服务器返回无效的授权类型响应

{
  "error": "invalid_grant",
  "error_description": "Provided Authorization Grant is invalid"
}

使用带有openid范围的“授权代码”授权类型获取访问令牌。

我已打开服务器上的日志记录;但是,我无法确定无效授权类型响应的原因。如何使用刷新令牌让WSO2 Identity Server刷新我的访问令牌?

来自服务器的日志:

  

TID:[ - 1234] [] [2016-03-14 09:20:11,241] DEBUG   {org.wso2.carbon.identity.oauth2.OAuth2Service} - 访问令牌   收到了客户ID CHao3ZYUVY6tRX4jJ82yzh4NVpka的用户ID,用户ID   null,Scope:[openid]和Grant Type:refresh_token

     

TID:[ - 1234] [] [2016-03-14 09:20:11,241] DEBUG   {} org.wso2.carbon.identity.oauth2.token.handlers.clientauth.Abs​​tractClientAuthHandler    - 可以使用客户端ID和密码进行身份验证。客户ID:CHao3ZYUVY6tRX4jJ82yzh4NVpka TID:[ - 1234] [] [2016-03-14   09:20:11,241]调试   {} org.wso2.carbon.identity.oauth2.token.handlers.clientauth.Abs​​tractClientAuthHandler    - 授权类型:refresh_token严格的客户端验证设置为:null

     

TID:[ - 1234] [] [2016-03-14 09:20:11,242] DEBUG   {org.wso2.carbon.identity.oauth2.util.OAuth2Util} - 客户   凭证是从数据库中提取的。 TID:[ - 1234] []   [2016-03-14 09:20:11,242] DEBUG   {org.wso2.carbon.identity.oauth2.util.OAuth2Util} - 成功   使用客户端ID验证客户端:CHao3ZYUVY6tRX4jJ82yzh4NVpka

     

TID:[ - 1234] [] [2016-03-14 09:20:11,243] DEBUG   {org.wso2.carbon.identity.oauth2.util.OAuth2Util} - 客户   凭据已添加到客户端ID的缓存中:   CHao3ZYUVY6tRX4jJ82yzh4NVpka

     

TID:[ - 1234] [] [2016-03-14 09:20:11,245] DEBUG   {} org.wso2.carbon.identity.oauth2.token.handlers.grant.RefreshGrantHandler    - 为客户端ID提供的无效刷新令牌:CHao3ZYUVY6tRX4jJ82yzh4NVpka

     

TID:[ - 1234] [] [2016-03-14 09:20:11,245] DEBUG   {org.wso2.carbon.identity.oauth2.token.AccessTokenIssuer} - 无效   客户提供的资助ID:CHao3ZYUVY6tRX4jJ82yzh4NVpka

     

TID:[ - 1234] [] [2016-03-14 09:20:11,246] DEBUG   {org.wso2.carbon.identity.oauth2.token.AccessTokenIssuer} -   OAuth-Error-Code = invalid_grant client-id = CHao3ZYUVY6tRX4jJ82yzh4NVpka   grant-type = refresh_token scope = openid

2 个答案:

答案 0 :(得分:2)

问题已经过时了......希望在这么久之后它可以帮助别人;)。 我遇到过同样的问题。但是,我通过指定确切的refresh token来解决它。值得注意的是refresh_tokenaccess token不同。如果您不知道/ refresh_token,请使用此curl命令获取它。

curl -k -d "grant_type=password&username=<username>&password=<password>" -H "Authorization: Basic SVpzSWk2SERiQjVlOFZLZFpBblVpX2ZaM2Y4YTpHbTBiSjZvV1Y4ZkM1T1FMTGxDNmpzbEFDVzhh" -H "Content-Type: application/x-www-form-urlencoded" https://localhost:8243/token

响应将是这样的: { "scope": "default", "token_type": "Bearer", "expires_in": 2604, "refresh_token": "7d6e9047d44a84e6bae7e80e3996182d", "access_token": "4255a34923eb464b6dc2983acffef4d8" }

然后在refresh_token令牌卷曲调用中使用renew。 关于第一卷曲请求的更多细节here 和平了.V。

答案 1 :(得分:0)

请查看此blog,其中解释了cURL命令及其内容。希望此博客能解决您的问题。