2016-03-14 72 views
4

我試圖刷新從wso2身份服務器獲取的訪問令牌(基於https://docs.wso2.com/display/IS510/Refresh+Token+Grant);服務器返回使用與OpenID範圍的「授權碼」交付式獲得訪問令牌無效交付式響應刷新令牌返回無效授權類型

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

我打開了服務器上的日誌記錄;但是,我無法確定無效授予類型響應的原因。我怎樣才能讓WSO2 Identity Server使用刷新令牌刷新我的訪問令牌?從服務器

日誌:

TID:[-1234] [] [2016年3月14日09:20:11241] DEBUG {org.wso2.carbon.identity。 oauth2.OAuth2Service} - 訪問令牌的客戶端ID CHao3ZYUVY6tRX4jJ82yzh4NVpka,用戶ID 空,範圍接收 請求:[OpenID的]和Grant類型:refresh_token

TID:[-1234] [] [2016年3月14日09: 20:11,241] DEBUG {org.wso2.carbon.identity。 oauth2.token.handlers.clientauth.Abs​​tractClientAuthHandler} - 可以使用客戶端ID和Secret進行身份驗證。客戶端ID:CHao3ZYUVY6tRX4jJ82yzh4NVpka TID:[-1234] [] [2016-03-14 09:20:11,241]調試 {org.wso2.carbon.identity.oauth2.token.handlers.clientauth.Abs​​tractClientAuthHandler} - 授權類型:refresh_token嚴格客戶端驗證設置爲:空

TID:[-1234] [] [2016年3月14日09:20:11242] DEBUG {org.wso2.carbon.identity.oauth2.util.OAuth2Util} - 客戶端 憑據從數據庫中獲取。 TID:[-1234] [] [2016年3月14日09:20:11242] DEBUG {org.wso2.carbon.identity.oauth2.util.OAuth2Util} - 成功 認證的客戶端的客戶端ID:CHao3ZYUVY6tRX4jJ82yzh4NVpka

TID:[-1234] [] [2016-03-14 09:20:11,243]調試 {org.wso2.carbon.identity.oauth2.util.OAuth2Util} - 客戶端 憑證已添加到緩存中客戶端ID: CHao3ZYUVY6tRX4jJ82yzh4NVpka

TID:[-1234] [] [2016年3月14日09:20:11245] DEBUG {org.wso2.carbon.identity.oauth2.token.handlers.grant.RefreshGrantHandler} - Inv alid刷新令牌提供用於客戶端與客戶端ID:CHao3ZYUVY6tRX4jJ82yzh4NVpka

TID:[-1234] [] [2016年3月14日09:20:11245] DEBUG {org.wso2.carbon.identity.oauth2.token。 AccessTokenIssuer} - 無效 格蘭特由客戶機ID提供:CHao3ZYUVY6tRX4jJ82yzh4NVpka

TID:[-1234] [] [2016年3月14日09:20:11246] DEBUG {org.wso2.carbon.identity.oauth2。 token.AccessTokenIssuer} - OAuth的錯誤代碼= invalid_grant客戶端ID = CHao3ZYUVY6tRX4jJ82yzh4NVpka 許可類型= refresh_token範圍=的OpenID

+0

嗨漢克。你有沒有找到這個解決方案? –

+0

@JonathanWilliams檢查我的resent解決方案,看看它是否能解決你的問題。 – livepwndz

+0

喬納森,對於遲到的迴應感到抱歉。我還沒找到該設備的可行解決方案。但是,如果您擁有原始身份驗證請求的會話cookie(Web應用程序),並且在刷新令牌期間傳遞這些cookie,那麼它就可以工作。 – Hank

回答

0

請看看這個blog,它解釋了cURL命令和它的內容。希望這個博客能夠解決你的問題。

+0

我試過curl命令,就像你博客中描述的那樣,以及我原來的帖子中提到的鏈接;但問題仍然存在。 – Hank

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" }

然後用它在你的renew令牌捲曲呼叫refresh_token。 第一卷曲請求更多細節here 和平.V。嗨Hank。

+0

我確實使用刷新令牌而不是訪問令牌來刷新呼叫。值得注意的是,您使用的授予類型是密碼授予,您必須擁有客戶端憑據(用戶名和密碼)。我的用例使用授權類型「授權」代碼,實際認證服務器可以是WSO2 Identity Server,Facebook,Twitter或任何支持令牌的第三方系統(OpenID/OAuth2) – Hank

相關問題