2016-12-15 4 views
0

WSO2 API 관리자 1.10.0과 WSO2 Identity Server 5.1.0을 키 관리자로 구성하고 MySQL 커뮤니티 서버 5.6을 데이터베이스 용으로 사용하고 있습니다. 인증 코드 부여 유형으로 얻은 토큰 (refresh_token 부여 유형)을 새로 고치려고하면 400 잘못된 요청 오류가 발생합니다 (invalid_grant - 제공된 권한 부여가 잘못됨) 새 토큰을 얻을 수 없습니다. 그런 다음 client_credentials 및 password 부여 유형을 사용하여 시도했으며 그 중 토큰을 새로 고칠 수있었습니다.인증 코드 흐름을 사용하여 유효한 새로 고침 토큰이있는 새 토큰을 가져 오는 중 오류가 발생했습니다.

Identity Server 로그를 검사하여 Identity 서버가 최신 토큰 (아래 로그)을 검색하려고 할 때 오류가 있음을 확인했습니다.

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 단계 : 내가 https://identity-dev.domain.pt/oauth2/authorize?response_type=code&client_id=OQU0_FyRQcdvTFbygziFw67ASHwa&scope=openid 프로필 & redirect_uri로 리디렉션하여 인증 코드를 받고 있어요 = http://localhost:8100

단계

은 내가 문제를 재현하기 위해 실행 모든 단계를 적어 2 : 이전 단계에서받은 코드를 사용하여 다음을 실행하여 액세스 토큰 (및 새로 고침 토큰)을 얻습니다.

-X POST 컬 -H '콘텐츠 유형 : 애플리케이션/x-www-form-urlencoded를 "'= -d grant_type authorization_code CLIENT_ID = & & OQU0_FyRQcdvTFbygziFw67ASHwa client_secret = & 3kC6Uf9f8Lr8HVl2n03dhQc57Jsa 범위 = 오픈 ID 코드 = 프로필 & & fd2f827afefba0ab0b17f9d701ad1488를 redirect_uri = http://localhost:8100 ' "https://identity-dev.domain.pt/oauth2/token"

3 단계 : 수신 새로 고침 토큰을 사용하여 이전 단계에서, 나는이 게시물에 설명 된대로 그러나 나는 400 잘못된 요청을받은 새로운 토큰을 얻기 위해 다음과 같은 요청을 실행합니다.

컬 -X POST -H "권한 부여 : 기본 T1FVMF9GeVJRY2R2VEZieWd6aUZ3NjdBU0h3YToza0M2VWY5ZjhMcjhIVmwybjAzZGhRYzU3SnNh"-H "콘텐츠 형식 : 응용 프로그램/x-www-form-urlencoded를"-H "수락 : 응용 프로그램/JSON"grant_type = refresh_token도 '-d & 범위 = openid profile & refresh_token = 7a7da99d70d48e10ac82e3681c63b0a1 ' "https://identity-dev.domain.pt/oauth2/token"

어떤 도움을 환영합니다!

답변

0

이 문제는 [1]에서 이미보고되었으며 이후 릴리스에서 수정되었습니다. jira 링크의 수정 사항을 참조하십시오. IS 5.2와 함께 APIM 2.0.0을 사용해 볼 수 있습니다.0 키 관리자로 구성됨

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