Application Load Balancer를 사용하여 JWTs 확인 - ELB

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

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 확인 사용 준비

다음 단계를 완료합니다.

  1. 클라이언트 ID와 클라이언트 보안 암호를 발급하는 IdP에 서비스를 등록합니다.

  2. IdP를 별도로 호출하여 서비스에 대한 액세스를 요청합니다. IdP는 액세스 토큰으로 응답합니다. 이 토큰은 일반적으로 IdP가 서명한 JWT입니다.

  3. JSON 웹 키 세트(JWKS) 엔드포인트를 설정합니다. 로드 밸런서는 구성한 잘 알려진 위치에 IdP가 게시한 퍼블릭 키를 획득합니다.

  4. 요청 헤더에 JWT를 포함하고 모든 요청에서 Application Load Balancer에 전달합니다.

콘솔을 사용하여 JWT 확인을 구성하려면

  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

  2. 탐색 창의 Load Balancing 아래에서 로드 밸런서를 선택합니다.

  3. Application Load Balancer를 선택하고 리스너 탭을 선택합니다.

  4. HTTPS 리스너를 선택하고 규칙 관리를 선택합니다.

  5. 규칙 추가를 선택합니다.

  6. (선택 사항) 규칙의 이름을 지정하려면 이름 및 태그를 확장하고 이름을 입력합니다. 태그를 추가하려면 추가 태그 추가를 선택하고 태그 키와 태그 값을 입력합니다.

  7. 조건에서 1~5개의 조건 값을 정의합니다.

  8. (선택 사항) 변환을 추가하려면 변환 추가를 선택하고 변환 유형을 선택한 다음 일치시킬 정규식과 대체 문자열을 입력합니다.

  9. 작업, 사전 라우팅 작업에서 토큰 검증을 선택합니다.

    1. JWKS 엔드포인트에 JSON 웹 키 세트 엔드포인트의 URL을 입력합니다. 이 엔드포인트는 공개적으로 액세스할 수 있어야 하며 JWT 서명을 확인하는 데 사용되는 퍼블릭 키를 반환해야 합니다.

    2. 발급자의 경우 JWT 토큰에 iss 클레임의 예상 값을 입력합니다.

    3. (선택 사항) 추가 클레임을 검증하려면 추가 클레임을 선택합니다.

      1. 클레임 이름에 검증할 클레임의 이름을 입력합니다.

      2. 형식에서 클레임 값을 해석하는 방법을 선택합니다.

        1. 단일 문자열: 클레임이 정확히 하나의 지정된 값과 일치해야 합니다.

        2. 문자열 배열: 클레임이 배열의 값 중 하나와 일치해야 합니다.

        3. 공백으로 구분된 값: 클레임에는 지정된 값을 포함해야 하는 공백으로 구분된 값이 포함됩니다.

      3. 값에 클레임의 예상 값을 입력합니다.

      4. 추가 클레임에 대해 반복합니다(최대 10개의 클레임).

  10. 작업, 라우팅 작업에서 토큰 검증 성공 후 수행해야 하는 기본 작업(다음으로 전달, 리디렉션 또는 고정 응답 반환)을 선택합니다.

  11. 필요에 따라 기본 작업 구성

  12. 저장을 선택합니다.

CLI를 사용하여 JWT 확인을 구성하려면

다음 create-rule 명령을 사용하여 JWT 확인를 구성합니다.

JWTs를 확인하는 작업이 포함된 리스너 규칙을 생성합니다. 리스너는 HTTPS 리스너여야 합니다.

aws elbv2 create-rule \ --listener-arn listener-arn \ --priority 10 \ --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를 위한 리스너 규칙 단원을 참조하십시오.