2016-09-15 3 views
0

WSO2 문제를 해결하기 위해 내가 경험 한 좌절감의 수준을 여러분과 공유하고 싶습니다. Api Manager와 Identity Server가 함께 작동하는 시스템이 있습니다. Api Manager는 API를 담당하고 Identity Server는 사용자 및 역할 인증을 담당합니다. API에 액세스하기 전에 클라이언트는 IS에서 토큰을 받아이를 AM으로 전달합니다. 그런 다음 토큰은 WSO2 AM 끝에서 구문 분석되고 JWT (모든 사용자 데이터가있는 객체)로 API에 도달합니다.역할 변경 후 WSO2 Identity Server 캐싱

한 역할에서 다른 역할로 사용자를 전환 할 때까지 제대로 작동합니다. 이 경우 wso2 캐시로 인해 이전 롤이 api로 15 분 동안 전달되어 문제가 발생합니다.

언뜻보기에 솔루션은 매우 간단합니다. 맞습니까? 캐시를 새로 고치거나 구성 파일에서 캐시를 비활성화하십시오.

"역할 변경"절차를 조사한 후에 역할을 변경하면 method "removeGatewayKeyCache"이 호출되어 시스템에서 캐싱이 제거되는 것으로 나타났습니다. 나는 그것이 무엇을 제거하는지 모르지만, 캐시는 그 과정 후에도 거기에 있었다. 그런데이 방법은 가능한 모든 구성 파일에서 GatewayKeyCache가 false로 설정된 경우에도 캐시를 청소합니다!

문제를 해결하기 위해 "캐시"라는 단어의 모든 구성 파일에 대한 검색을 실행하여 비활성화해야하는 캐시를 식별해야했습니다. WSO2 AM & IS에는 수십 개의 구성 파일이 있으며 그 중 대부분에는 "캐시"설정이 있으며 그 중 일부는 서로 다른 파일에 복제됩니다. 내가 찾을 수있는 모든 관련 해제하려고, 그래서 거짓이 모든 설정 :

EnableGatewayKeyCache 
EnableKeyMgtValidationInfoCache 
EnableJWTCache 
EnableOAuthCache 
UserRolesCacheEnabled 
AuthorizationCacheEnabled 
GetAllRolesOfUserEnabled 

그러나 JWT 토큰이 아직 15 분 이전에 캐시 된 사용자 역할을 포함! 그리고 여전히 "removeGatewayKeyCache"를 호출하고 캐시에서 일부 토큰을 제거했습니다 (빌어 먹을!).

내 해결 방법은 carbon.xml 구성을 열고 0

<DefaultCacheTimeout>0</DefaultCacheTimeout> 

에 DefaultCacheTimeout의 PARAM 설정이 일을하는 유일한 트릭이었다! 그래서 지금은 전혀 캐싱하지 않은 시스템이 있지만 적어도 예상대로 작동합니다.

모든 제안은 높이 평가 될 것입니다.

+0

APIM 버전은 무엇입니까? – Bee

+0

AM은 1.10.0, IS - 5.1.0, apimgt 플러그인은 5.0.3입니다. – yuriscom

답변

0

this document에서 설명한대로 모든 통화마다 JWT 토큰을 생성하려면 EnableKeyMgtValidationInfoCache을 사용 중지했는지 확인하십시오.

+0

예, EnableKeyMgtValidationInfoCache도 false로 설정됩니다. 그것을 언급하는 것을 잊었다. 지금 게시글에 추가합니다. – yuriscom

관련 문제