2017-12-07 1 views
1

wso2 api 관리자와 서버 간 통신을 구현하고 싶으므로 내 API를 자신의 응용 프로그램을 만들고 내 API에 등록 할 수있는 thirdparty 클라이언트에서 사용할 수 있습니다. 또한 이러한 클라이언트는 특정 자원 세트에 의해 제한되어야합니다. 조직 ID 세트가 있으며 각 특정 클라이언트는 일부 ID 하위 세트에만 액세스해야합니다. 클라이언트 키가 WSO2AM_DB의 IDN_OAUTH_CONSUMER_APPS 테이블에 저장된다는 것을 알았습니다. 이 DB에 연결하여 clientId-to-organizationIds 매핑을 구현하는 중개자의 도움을 받아 개별 서비스에서 클라이언트 ID를 읽을 수 있습니다.이 서비스를 호출하고 url에 지정된 조직 ID가 허용되는지 확인하고 액세스 토큰에 조직 ID 속성을 추가 할 수 있습니다. 백엔드 서비스는 조직이 허용되면 한 번 더 확인할 수 있습니다. 그러나 이것이 올바른 접근법인지 확실하지 않습니다. 어쩌면 그러한 조작없이 도울 수있는 wSO2의 무언가가 있을까요? 당신이 발견으로클라이언트 자격 증명 흐름에 대한 wso2 api 관리자에서 클라이언트 키 별 특정 리소스에 대한 액세스를 제한하는 방법?

답변

0

또한 이러한 클라이언트는 자원

의 특정 설정에 의해 제한되어야한다 - API를 관리자가 엔드 포인트에 따라 통화 권한을 부여합니다. 리소스 (예 : 특정 ID) 자체는 백엔드 서비스에 의해 승인되어야합니다. API 관리자에게이 수준의 승인을 적용하는 것이 합리적인지 확신 할 수 없습니다 (가능한 것은 아니지만 유연하지 않을 수도 있음).

어쩌면 wso2에는 이러한 조작없이 도움이 될만한 것이 있습니까?

나는 다음과 같이 제안합니다 : JWT token을 백엔드 서비스에 보내십시오. 백엔드 서비스는 제품 데이터베이스에 하드 바인딩하지 않고 권한 부여 (사용자 이름, 응용 프로그램 등을 기반으로)를 수행해야합니다.

링크 된 문서는 자체 토큰 생성기를 구현하는 방법도 설명하므로 jwt 토큰 (예 : 조직 ID 등)에 추가 클레임을 추가 할 수 있습니다.

+0

BE에 대한 리소스 제한을 확인해야하는 경우 wso2 db에서 클라이언트 ID를 가져와야하며 하드 바인딩이 필요합니다. 실제 BE 서비스 호출 전에 리소스 제한을 수행하고 JWT에서 orgId 속성을 추가하려고합니다. 이는 BE 호출 수 측면에서보다 효율적이며 BE는 허용 된 리소스를 인식하지 않기 때문에 - JWT의 id와 url param의 id를 비교합니다. 내가하고 싶은 일은 클라이언트와 관련 ID를 등록 할 별도의 서비스를 작성한 다음 그 내보내기 클라이언트를 wso2로 작성하는 것입니다. 따라서 wso2 중재자는이 서비스에 연결하여 필요한 정보로 JWT를 채울 수 있습니다. – dizon

관련 문제