기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Application Load Balancer를 사용하여 JWTs 확인
클라이언트가 제공하는 JSON 웹 토큰(JWT)을 확인하여 S2S(Secure service-to-service) 또는 M2M(machine-to-machine) 통신을 수행하도록 Application Load Balancer(ALB)를 구성할 수 있습니다. 로드 밸런서는 JWT가 발급된 방식과 상관없이 사람의 상호 작용 없이 JWT를 확인할 수 있습니다.
ALB는 토큰 서명을 검증하며 'iss'(발급자) 및 'exp'(만료)라는 두 가지 필수 클레임이 필요합니다. 또한 토큰에 있는 경우 ALB는 'nbf'(이전이 아님) 및 'iat'(시점에 발행됨) 클레임도 검증합니다. 검증을 위해 최대 10개의 추가 클레임을 구성할 수 있습니다. 이러한 클레임은 세 가지 형식을 지원합니다.
-
단일 문자열: 단일 텍스트 값
-
공백으로 구분된 값: 공백으로 구분된 여러 값(최대 10개 값)
-
문자열 배열: 텍스트 값 배열(최대 10개 값)
토큰이 유효한 경우 로드 밸런서는 토큰이 있는 요청을 대상에 있는 그대로 전달합니다. 그렇지 않으면 서비스에서 요청을 거부합니다.
JWT 확인 사용 준비
다음 단계를 완료합니다.
-
클라이언트 ID와 클라이언트 보안 암호를 발급하는 IdP에 서비스를 등록합니다.
-
IdP를 별도로 호출하여 서비스에 대한 액세스를 요청합니다. IdP는 액세스 토큰으로 응답합니다. 이 토큰은 일반적으로 IdP가 서명한 JWT입니다.
-
JSON 웹 키 세트(JWKS) 엔드포인트를 설정합니다. 로드 밸런서는 구성한 잘 알려진 위치에 IdP가 게시한 퍼블릭 키를 획득합니다.
-
요청 헤더에 JWT를 포함하고 모든 요청에서 Application Load Balancer에 전달합니다.
콘솔을 사용하여 JWT 확인을 구성하려면
-
https://console.aws.amazon.com/ec2/
에서 Amazon EC2 콘솔을 엽니다. -
탐색 창의 Load Balancing 아래에서 로드 밸런서를 선택합니다.
-
Application Load Balancer를 선택하고 리스너 탭을 선택합니다.
-
HTTPS 리스너를 선택하고 규칙 관리를 선택합니다.
-
규칙 추가를 선택합니다.
-
(선택 사항) 규칙의 이름을 지정하려면 이름 및 태그를 확장하고 이름을 입력합니다. 태그를 추가하려면 추가 태그 추가를 선택하고 태그 키와 태그 값을 입력합니다.
-
조건에서 1~5개의 조건 값을 정의합니다.
-
(선택 사항) 변환을 추가하려면 변환 추가를 선택하고 변환 유형을 선택한 다음 일치시킬 정규식과 대체 문자열을 입력합니다.
-
작업, 사전 라우팅 작업에서 토큰 검증을 선택합니다.
-
JWKS 엔드포인트에 JSON 웹 키 세트 엔드포인트의 URL을 입력합니다. 이 엔드포인트는 공개적으로 액세스할 수 있어야 하며 JWT 서명을 확인하는 데 사용되는 퍼블릭 키를 반환해야 합니다.
-
발급자의 경우 JWT 토큰에 iss 클레임의 예상 값을 입력합니다.
-
(선택 사항) 추가 클레임을 검증하려면 추가 클레임을 선택합니다.
클레임 이름에 검증할 클레임의 이름을 입력합니다.
형식에서 클레임 값을 해석하는 방법을 선택합니다.
-
단일 문자열: 클레임이 정확히 하나의 지정된 값과 일치해야 합니다.
-
문자열 배열: 클레임이 배열의 값 중 하나와 일치해야 합니다.
-
공백으로 구분된 값: 클레임에는 지정된 값을 포함해야 하는 공백으로 구분된 값이 포함됩니다.
-
-
값에 클레임의 예상 값을 입력합니다.
-
추가 클레임에 대해 반복합니다(최대 10개의 클레임).
-
-
작업, 라우팅 작업에서 토큰 검증 성공 후 수행해야 하는 기본 작업(다음으로 전달, 리디렉션 또는 고정 응답 반환)을 선택합니다.
-
필요에 따라 기본 작업 구성
-
저장을 선택합니다.
CLI를 사용하여 JWT 확인을 구성하려면
다음 create-rule 명령을 사용하여 JWT 확인를 구성합니다.
JWTs를 확인하는 작업이 포함된 리스너 규칙을 생성합니다. 리스너는 HTTPS 리스너여야 합니다.
aws elbv2 create-rule \ --listener-arnlistener-arn\ --priority10\ --conditions Field=path-pattern,Values="/login" \ --actions file://actions.json
다음은 jwt-validation 작업과 forward 작업을 지정하는 actions.json 파일의 예입니다. 지원되는 필드인지 확인하려면 자격 증명 공급자가 제공하는 설명서를 참조하세요.
--actions '[ { "Type":"jwt-validation", "JwtValidationConfig":{ "JwksEndpoint":"https://issuer.example.com/.well-known/jwks.json", "Issuer":"https://issuer.com" }, "Order":1 }, { "Type":"forward", "TargetGroupArn":"target-group-arn", "Order":2 } ]'
다음 예제에서는 검증할 추가 클레임을 지정합니다.
--actions '[ { "Type":"jwt-validation", "JwtValidationConfig":{ "JwksEndpoint":"https://issuer.example.com/.well-known/jwks.json", "Issuer":"https://issuer.com", "AdditionalClaims":[ { "Format":"string-array", "Name":"claim_name", "Values":["value1","value2"] } ], }, "Order":1 }, { "Type":"forward", "TargetGroupArn":"target-group-arn", "Order":2 } ]'
자세한 내용은 Application Load Balancer를 위한 리스너 규칙 단원을 참조하십시오.