3.6. 사용자 이름을 추출할 때 JsonPath 쿼리에 대한 OAuth 2.0 지원
Kafka 클러스터에서 OAuth 2.0 인증을 사용하려면 인증 방법 oauth 를 사용하여 Kafka 사용자 정의 리소스에 리스너 구성을 지정합니다. 리스너 속성을 구성할 때 JsonPath 쿼리를 사용하여 사용 중인 권한 부여 서버에서 사용자 이름을 추출할 수 있습니다. JsonPath 쿼리를 사용하여 userNameClaim 및 fallbackUserNameClaim 속성에 대한 리스너에서 사용자 이름 추출 옵션을 지정할 수 있습니다. 이를 통해 중첩된 데이터 구조 내의 특정 값에 액세스하여 토큰에서 사용자 이름을 추출할 수 있습니다. 예를 들어 JSON 토큰 데이터 구조 내의 사용자 정보 데이터 구조에 포함된 사용자 이름이 있을 수 있습니다.
다음 예제에서는 인트로스펙션 엔드포인트를 사용하여 토큰 검증을 구성할 때 JsonPath 쿼리가 속성과 함께 사용되는 방법을 보여줍니다.
인트로스펙션 끝점을 사용하여 토큰 검증 구성
- name: external
port: 9094
type: loadbalancer
tls: true
authentication:
type: oauth
validIssuerUri: <https://<auth-server-address>/auth/realms/external>
introspectionEndpointUri: <https://<auth-server-address>/auth/realms/external/protocol/openid-connect/token/introspect>
clientId: kafka-broker
clientSecret:
secretName: my-cluster-oauth
key: clientSecret
userNameClaim: "['user.info'].['user.id']"
maxSecondsWithoutReauthentication: 3600
fallbackUserNameClaim: "['client.info'].['client.id']"
fallbackUserNamePrefix: client-account-
# ...
- 1
- 토큰에 실제 사용자 이름이 포함된 토큰 클레임(또는 키)입니다. 사용자 이름은 사용자를 식별하는 데 사용되는 주체 입니다.
userNameClaim값은 사용된 권한 부여 서버에 따라 다릅니다. - 2
- 권한 부여 서버는 일반 사용자와 클라이언트를 모두 식별하는 단일 속성을 제공하지 않을 수 있습니다. 클라이언트가 자체 이름으로 인증하면 서버에서 클라이언트 ID 를 제공할 수 있습니다. 사용자가 사용자 이름과 암호를 사용하여 인증하는 경우 새로 고침 토큰 또는 액세스 토큰을 가져오기 위해 서버에서 클라이언트 ID 외에 username 속성을 제공할 수 있습니다. 기본 사용자 ID 속성을 사용할 수 없는 경우 사용할 사용자 이름 클레임(attribute)을 지정하려면 이 대체 옵션을 사용합니다. 필요한 경우 JsonPath 쿼리를 사용하여 중첩된 특성을 대상으로 지정할 수 있습니다.
Kafka 브로커에 대한 OAuth 2.0 지원 구성 을 참조하십시오.