7.6. 바로 Naked Impersonation
subject_token 을 제공하지 않고 내부 토큰 교환 요청을 할 수 있습니다. 이는 클라이언트가 영역에 모든 사용자를 가장할 수 있으므로 클라이언트에 많은 신뢰를 배치하기 때문에 직접 naked impersonation이라고 합니다. 이를 교환할 대상 토큰을 얻을 수 없는 애플리케이션을 브릿지해야 할 수 있습니다. 예를 들어 LDAP와 직접 로그인을 수행하는 레거시 애플리케이션을 통합할 수 있습니다. 이 경우 레거시 앱은 사용자 자체를 인증할 수 있지만 토큰을 가져올 수 없습니다.
고객에게 직접 육아 가장을 사용하는 것은 매우 위험합니다. 클라이언트의 자격 증명이 손상되면 해당 클라이언트는 시스템의 모든 사용자를 가장할 수 있습니다.
7.6.1. 교환에 대한 권한 부여 링크 복사링크가 클립보드에 복사되었습니다!
audience 매개 변수가 제공되면 호출 클라이언트에 클라이언트로 교환할 수 있는 권한이 있어야 합니다. 이 장의 앞부분에서 이 설정을 설정하는 방법에 대해 설명합니다.
또한 호출 클라이언트에는 사용자를 가장할 수 있는 권한이 부여되어야 합니다. 관리 콘솔에서 다음을 수행합니다.
절차
- 메뉴에서 사용자를 클릭합니다.
권한 탭을 클릭합니다.
사용자 권한
사용 권한을 true 로 전환합니다.
ID 공급자 권한
페이지에는 가장 링크가 표시됩니다.
해당 링크를 클릭하여 권한 정의를 시작합니다.
이 설정 페이지가 표시됩니다.
사용자 Impersonation 권한 설정
- Authorization 링크를 클릭합니다.
Policies 탭으로 이동하여 클라이언트 정책을 생성합니다.
클라이언트 정책 생성
- 토큰 교환을 요청하는 인증된 클라이언트인 시작 클라이언트를 입력합니다.
사용자의 가장 권한으로 돌아가 방금 정의한 클라이언트 정책을 추가합니다.
클라이언트 정책 적용
이제 클라이언트는 사용자를 가장할 수 있는 권한이 있습니다. 이 작업을 올바르게 수행하지 않으면 이러한 유형의 교환을 시도하면 403 Forbidden 응답이 표시됩니다.
공개 클라이언트는 직접 육안을 할 수 없습니다.
7.6.2. 요청하기 링크 복사링크가 클립보드에 복사되었습니다!
요청하려면 requested_subject 매개변수를 지정하기만 하면 됩니다. 유효한 사용자의 사용자 이름 또는 사용자 ID여야 합니다. 원하는 경우 audience 매개변수를 지정할 수도 있습니다.
curl -X POST \
-d "client_id=starting-client" \
-d "client_secret=the client secret" \
--data-urlencode "grant_type=urn:ietf:params:oauth:grant-type:token-exchange" \
-d "requested_subject=wburke" \
http://localhost:8080/auth/realms/myrealm/protocol/openid-connect/token