1.20.7.4. OpenID Connect (OIDC) 사용 사례
Service Mesh 및 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
: 이 정보를 찾을 수 있는 값도 있습니다.
이 작업을 수행하면 할당 시 하나의 값만 유지됩니다.