我正在尝试刷新从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.AbstractClientAuthHandler - 可以使用客户端ID和密码进行身份验证。客户ID:CHao3ZYUVY6tRX4jJ82yzh4NVpka TID:[ - 1234] [] [2016-03-14 09:20:11,241]调试 {} org.wso2.carbon.identity.oauth2.token.handlers.clientauth.AbstractClientAuthHandler - 授权类型: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
答案 0 :(得分:2)
问题已经过时了......希望在这么久之后它可以帮助别人;)。
我遇到过同样的问题。但是,我通过指定确切的refresh token
来解决它。值得注意的是refresh_token
与access 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命令及其内容。希望此博客能解决您的问题。