키 클로 크 베어러 전용 클라이언트 : 왜 존재합니까?


10

bearer-onlyKeycloak 의 고객 개념에 대해 머리를 감싸려고합니다 .

본인은 공개 대 기밀의 개념과 서비스 계정 및 grant_type=client_credentials물건 의 개념을 이해합니다 . 그러나와 함께 bearer-only붙어 있습니다.

인터넷 검색은 다음과 같은 토론의 일부만 보여줍니다.

bearer-only클라이언트 가있는 키 클로킹에서 토큰을 얻을 수 없습니다 .

문서도 명확하지 않습니다. 그들이 말하는 것은 :

베어러 전용 액세스 유형은 애플리케이션이 베어러 토큰 요청 만 허용 함을 의미합니다.

내 앱에서 베어러 토큰 요청 만 허용하는 경우 클라이언트 ID / 클라이언트 시크릿을 사용하여 Keycloak에서 토큰을 얻을 수없는 경우이 토큰을 어떻게 얻을 수 있습니까?

그리고 토큰을 얻을 수 없다면 무엇을 할 수 있습니까? 이러한 고객이 존재하는 이유는 무엇입니까? 누군가이 유형의 클라이언트를 사용하는 예를 제공해 줄 수 있습니까?

답변:


5

내 이해에, 그것은 당신이 내부 서비스를 할 때 사용됩니다. 하자 당신이이 말을 ServiceA하고 ServiceB. 사용자가 ServiceA직접 전화를 겁니다 ServiceB. ServiceB다른 서비스에서만 사용자가 직접 호출하지 않습니다. ServiceA사용자의 자격 증명을 사용하여 토큰을 얻습니다. 그런 다음이 토큰을 사용하여을 호출 ServiceB합니다. ServiceB로그인을 시작하지 않습니다. 토큰을 사용하여 권한을 확인합니다.

이 경우 ServiceA가 confidential되고 ServiceB가 bearer-only클라이언트가됩니다.


1
따라서 이는 내 고객이 무기명 전용 인 경우 사용할 수있는 유일한 옵션은 토큰 ServiceA이 유효한지 확인하기 위해 Keycloak에 확인 요청을하는 것 입니다. 권리? 그러나 이것이 사실이라면 왜 Keycloak에 전화합니까? 내 클라이언트에 공개 키 클론 키가 있으면 키 클로 크를 호출하지 않고도이 키를 사용하여 확인할 수 있습니다.
kurtgn

토큰 범위 때문에. 당신이 토큰 교환을위한 Keycload 필요하므로 서비스 A는 서비스 B보다 다른 범위를 가져야한다
줄리안 EGNER

@JulianEgner 토큰 교환이 현재 Tech Preview에 있고 완전히 지원되지 않으며 Env 변수를 사용하여 명시 적으로 설정해야한다는 점을 제외하면이 점이 의미가 있습니다. 되어 bearer-only아직 준비가되지 않았습니다이 사용 사례를 지원하는 정말 장소에서?
irbull

@irbull 토큰 교환이 기술 미리보기에 있다는 정보를 어디서 얻었습니까?
Julian Egner

@JulianEgner 문서의 맨 아래에 나열되었습니다. keycloak.org/docs/latest/securing_apps/나와 있습니다. "토큰 교환은 기술 미리보기이며 완전히 지원되지 않습니다.이 기능은 기본적으로 비활성화되어 있습니다."
irbull

5

무기명 전용 액세스 유형 의미

베어러 전용 액세스 유형은 애플리케이션이 베어러 토큰 요청 만 허용 함을 의미합니다. 이 기능이 켜져 있으면이 응용 프로그램은 브라우저 로그인에 참여할 수 없습니다.

따라서 클라이언트를 bearer-only다음과 같이 선택하면 키 클론 어댑터는 사용자 인증을 시도하지 않고 베어러 토큰 만 확인합니다. 키 클로 크 문서에 bearer-only응용 프로그램이 언급 된 이유 는 브라우저에서 로그인을 허용하지 않습니다.

그리고 토큰을 얻을 수 없다면 무엇을 할 수 있습니까? 이러한 고객이 존재하는 이유는 무엇입니까?

Keycloak Server에서는 클라이언트를 베어러 전용으로 설정할 수 없습니다. 그래도 어댑터 구성에서 베어러 전용을 사용할 수 있습니다. Keycloak에서는 "베어러 전용"클라이언트 (서버에서 클라이언트를 설정할 때)가 서버에서 토큰을 얻을 수 없습니다. 서버에서 클라이언트를 "기밀"로 변경하고 어댑터 구성 (keycloak.json)에서 베어러 전용을 설정하십시오.

따라서 위의 진술을 이해하면 사례에서 서로 대화하는 두 개의 마이크로 서비스가 있으면 발신자가 confidential되고 수신자는bearer-only

Keycloak도 언급했습니다

베어러 전용 클라이언트는 로그인을 시작하지 않는 웹 서비스이며 일반적으로 백엔드 보안에 사용됩니다.

따라서 어댑터를 사용 bearer-only하려면 필요에 따라 사용할 수 있습니다


1
설명해 주셔서 감사합니다 Subodh! 따라서 이는 내 고객이 무기명 전용 인 경우 사용할 수있는 유일한 옵션은 토큰이 유효한지 확인하기 위해 Keycloak에 확인 요청을하는 것입니다. 권리? 그러나 이것이 사실이라면 왜 Keycloak에 전화합니까? 내 클라이언트에 공개 키 클론 키가 있으면 키 클로 크를 호출하지 않고도이 키를 사용하여 확인할 수 있습니다.
kurtgn

@kurtgn 만약 당신이 어떤 어댑터를 사용하고 있다면 나는 bearer-only그렇지 않으면 당신의 클라이언트를 만드는 것이 좋습니다confidential
Subodh Joshi

아니, 내가 일반적인 OIDC libs와 사용할 필요가 있으므로, Keycloak에 대한 파이썬 전용 어댑터를 죄다하지, 내가 파이썬 코딩하고, 어댑터를 사용하지 않는
kurtgn

Keycloak + Python Integration에 어떤 라이브러리를 사용하고 있습니까?
Subodh Joshi


0

짧은 대답 : 베어러 전용 클라이언트를 사용하여 액세스 토큰을 얻을 수 없지만 베어러 전용 클라이언트가 다른 클라이언트를 사용하여 수락 할 수있는 액세스 토큰을 얻을 수 있습니다.

베어러 전용 클라이언트는 웹 응용 프로그램과 같은 백엔드 응용 프로그램을 유용하게 나타냅니다 (프론트 응용 프로그램에 의해 호출되고 권한 부여 서버에 의해 보안 됨) (= 키 클로킹).

백엔드 / 웹 서비스 응용 프로그램은 사용자가 직접 호출하지 않으므로 Oauth2.0 사용자 대화식 흐름에서 재생할 수 없습니다. "소유자 전용"문서를이 사실을 키 클로킹 서버에 설정하면 관리자가 다른 필수 값없이 클라이언트를 구성 할 수 있으며 (예 : 리디렉션 URI) 클라이언트가 해당 클라이언트에 대한 토큰을 얻으려고 할 경우 유용한 오류 메시지를 허용 함

그러나 이것이이 클라이언트에 대한 특정 역할을 구성 할 수 없다는 것을 의미하지는 않으므로 키 클로 크 영역에 나타나야합니다.

또한 베어러 전용 클라이언트는 수신 된 액세스 토큰을 확인해야합니다. 특히이 (권장) 어댑터 기능 "확인 토큰 청중"이 활성화 된 경우 베어러 전용 클라이언트는 액세스 토큰이 발행되었는지 확인해야합니다. 베어러 전용 클라이언트는 액세스 토큰의 대상 속성에 있어야합니다. https://www.keycloak.org/docs/latest/server_admin/index.html#_audience를 참조 하십시오.

키 클로킹으로 관객을 관리하려면 베어러 전용 클라이언트를 키 클로 크 영역에 등록해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.