1.20.7.4. OIDC(OpenID Connect) 사용 사례
서비스 메시 및 3scale Istio 어댑터의 경우 다음 예에 표시된 대로 RequestAuthentication
을 배포하여 자체 워크로드 데이터 및 jwtRules
를 채워야 합니다.
apiVersion: security.istio.io/v1beta1 kind: RequestAuthentication metadata: name: jwt-example namespace: bookinfo spec: selector: matchLabels: app: productpage jwtRules: - issuer: >- http://keycloak-keycloak.34.242.107.254.nip.io/auth/realms/3scale-keycloak jwksUri: >- http://keycloak-keycloak.34.242.107.254.nip.io/auth/realms/3scale-keycloak/protocol/openid-connect/certs
RequestAuthentication
을 적용하면 JWT
토큰을 검증하도록 네이티브 플러그인으로 Envoy
를 구성합니다. 프록시는 모듈을 실행하기 전에 모든 것을 검증하므로 실패한 모든 요청이 3scale WebAssembly 모듈에 연결되지 않습니다.
JWT
토큰이 검증되면 프록시는 키가 플러그인의 특정 구성에 따라 달라지는 항목과 함께 내부 메타데이터 오브젝트에 콘텐츠를 저장합니다. 이 사용 사례에서는 알 수 없는 키 이름이 포함된 단일 항목으로 구조 오브젝트를 검색할 수 있는 기능을 제공합니다.
OIDC의 3scale app_id
는 OAuth client_id
와 일치합니다. JWT
토큰의 azp
또는 aud
필드에 있습니다.
Envoy의 네이티브 JWT
인증 필터에서 app_id
필드를 가져오려면 다음 예제를 참조하십시오.
credentials: app_id: - filter: path: - envoy.filters.http.jwt_authn - "0" keys: - azp - aud ops: - take: head: 1
이 예제에서는 filter
소스 유형을 사용하여 Envoy
특정 JWT
인증 네이티브 플러그인에서 오브젝트의 필터 메타데이터를 조회하도록 모듈에 지시합니다. 이 플러그인에는 단일 항목 및 사전 구성된 이름이 있는 구조 오브젝트의 일부로 JWT
토큰이 포함됩니다. 0
을 사용하여 단일 항목에만 액세스하도록 지정합니다.
결과 값은 두 필드를 분석할 구조입니다.
-
azp
:app_id
가 있는 값입니다. -
aud
: 이 정보도 찾을 수 있는 값입니다.
이 작업은 할당을 위해 하나의 값만 보유합니다.