2016-12-15 10 views
0

私は、WSO2 APIマネージャ1.10.0とWSO2 Identity Server 5.1.0をキーマネージャとして、MySQL Community Server 5.6をデータベース用に使用しています。認可コード付与タイプで取得したトークン(refresh_token認可タイプ)をリフレッシュしようとすると、400の不正リクエストエラー(invalid_grant - 指定認可付与が無効です)が発生し、新しいトークンを取得できません。私はそれから、client_credentialsとpasswordのグラントタイプを試してみましたが、トークンをリフレッシュすることができました。認証コードフローを持つ有効な更新トークンを持つ新しいトークンを取得中にエラーが発生しました

Identity Serverのログを確認したところ、Identity Serverが最新のトークン(以下のログ)を取得しようとしたときにエラーが発生することがわかりました。

TID: [-1234] [] [2016-12-15 12:40:00,470] DEBUG {org.wso2.carbon.identity.oauth2.OAuth2Service} - Access Token request received for Client ID OQU0_FyRQcdvTFbygziFw67ASHwa, User ID null, Scope : [openid, profile] and Grant Type : refresh_token 
TID: [-1234] [] [2016-12-15 12:40:00,470] DEBUG {org.wso2.carbon.identity.oauth2.token.handlers.clientauth.AbstractClientAuthHandler} - Can authenticate with client ID and Secret. Client ID: OQU0_FyRQcdvTFbygziFw67ASHwa 
TID: [-1234] [] [2016-12-15 12:40:00,470] DEBUG {org.wso2.carbon.identity.oauth2.token.handlers.clientauth.AbstractClientAuthHandler} - Grant type : refresh_token Strict client validation set to : null 
TID: [-1234] [] [2016-12-15 12:40:00,470] DEBUG {org.wso2.carbon.identity.oauth2.util.OAuth2Util} - Client credentials were available in the cache for client id : OQU0_FyRQcdvTFbygziFw67ASHwa 
TID: [-1234] [] [2016-12-15 12:40:00,470] DEBUG {org.wso2.carbon.identity.oauth2.util.OAuth2Util} - Successfully authenticated the client with client id : OQU0_FyRQcdvTFbygziFw67ASHwa 
TID: [-1234] [] [2016-12-15 12:40:00,474] DEBUG {org.wso2.carbon.identity.oauth2.token.handlers.grant.RefreshGrantHandler} - Error while retrieving the latest refresh token 
TID: [-1234] [] [2016-12-15 12:40:00,474] DEBUG {org.wso2.carbon.identity.oauth2.token.AccessTokenIssuer} - Invalid Grant provided by the client Id: OQU0_FyRQcdvTFbygziFw67ASHwa 
TID: [-1234] [] [2016-12-15 12:40:00,474] DEBUG {org.wso2.carbon.identity.oauth2.token.AccessTokenIssuer} - OAuth-Error-Code=invalid_grant client-id=OQU0_FyRQcdvTFbygziFw67ASHwa grant-type=refresh_token scope=openid profile 
TID: [-1234] [] [2016-12-15 12:40:06,492] DEBUG {org.wso2.carbon.core.deployment.CarbonDeploymentSchedulerTask} - Running deployment synchronizer update... tenant : carbon.super 
TID: [-1234] [] [2016-12-15 12:40:06,588] DEBUG {org.wso2.carbon.core.deployment.CarbonDeploymentSchedulerTask} - Running deployment synchronizer commit... tenant : carbon.super 

私はsource codeをデバッグし、私は問題がUSER_DOMAIN = NULL句と、特に、以下のSQLクエリに関連することができると思います。

SELECT ACCESS_TOKEN, REFRESH_TOKEN, TIME_CREATED, REFRESH_TOKEN_TIME_CREATED, VALIDITY_PERIOD, REFRESH_TOKEN_VALIDITY_PERIOD, TOKEN_STATE, USER_TYPE, TOKEN_ID, SUBJECT_IDENTIFIER FROM IDN_OAUTH2_ACCESS_TOKEN WHERE CONSUMER_KEY_ID = (SELECT ID FROM IDN_OAUTH_CONSUMER_APPS WHERE CONSUMER_KEY = 'OQU0_FyRQcdvTFbygziFw67ASHwa') AND AUTHZ_USER='michael.pinheiro' AND TENANT_ID=-1234 AND USER_DOMAIN=null AND TOKEN_SCOPE_HASH='369db21a386ae433e65c0ff34d35708d' ORDER BY TIME_CREATED DESC LIMIT 1 

私はまた、表IDN_OAUTH2_ACCESS_TOKENで、作成したアクセストークンを認可コードグラントタイプを使用している場合は、パスワードやclient_credentials助成金を使用している場合がNULLに設定されたユーザードメイン列に値が「PRIMARY」で入力したことに気づきました。

新しいアクセストークンを作成するときに、何らかの理由でユーザードメインをPRIMARYに設定するパラメータが不足していますか?

私は問題を再現するために実行されたすべての手順を書き留め:

ステップ1: 私は= http://localhost:8100

ステップhttps://identity-dev.domain.pt/oauth2/authorize?response_type=code&client_id=OQU0_FyRQcdvTFbygziFw67ASHwa&scope=openidプロファイル& REDIRECT_URIにリダイレクトすることにより、認証コードを取得しています2: 前の手順で受信したコードを使用して、実行トークン(およびリフレッシュトークン)を取得しています。

-X POSTカール-H "コンテンツタイプ:application/x-www-form-urlencodedで"「-d grant_type = authorization_code & CLIENT_ID = OQU0_FyRQcdvTFbygziFw67ASHwa & client_secret = 3kC6Uf9f8Lr8HVl2n03dhQc57Jsa &スコープ= OpenIDのプロファイル&コード= fd2f827afefba0ab0b17f9d701ad1488 & REDIRECT_URI = http://localhost:8100 」 『https://identity-dev.domain.pt/oauth2/token

ステップ3: 受け取ったリフレッシュトークンを使用して、前のステップでは、私がこの記事で説明したようにしかし、私は400不正な要求を受信し、新しいトークンを取得するには、次のリクエストを実行します。

カール-X POST -H "認可:基本T1FVMF9GeVJRY2R2VEZieWd6aUZ3NjdBU0h3YToza0M2VWY5ZjhMcjhIVmwybjAzZGhRYzU3SnNh" -H "のContent-Type:アプリケーション/ x-www-form-urlencodedで" -H "受け入れ:アプリケーション/ JSON" grant_type = refresh_token」-d &スコープ= openidプロフィール& refresh_token = 7a7da99d70d48e10ac82e3681c63b0a1 '"https://identity-dev.domain.pt/oauth2/token"

何か助けが歓迎されます!

答えて

0

この問題は[1]で報告されており、それ以降のリリースで修正されています。ジラリンクの修正を参照してください。 IS 5.2でAPIM 2.0.0を試すことができます。0はキーマネージャとして設定されています

[1] https://wso2.org/jira/browse/IDENTITY-4322

関連する問題