사용자 인증을 위해 Application Load Balancer를 Amazon Cognito 사용자 풀과 통합하려고 합니다.
간략한 설명
Application Load Balancer 및 Amazon Cognito 사용자 풀을 사용하여 사용자를 인증하도록 설정하려면 다음 단계를 완료하십시오.
- Application Load Balancer를 생성합니다.
- Application Load Balancer의 DNS 이름을 가져옵니다.
- Amazon Cognito 사용자 풀을 생성하고 구성합니다.
- Application Load Balancer를 구성합니다.
- 설정을 테스트합니다.
해결 방법
Application Load Balancer 생성
참고: Application Load Balancer를 이미 구성한 경우 Application Load Balancer의 DNS 이름 가져오기 섹션으로 건너뛰십시오.
다음 단계를 완료하십시오.
- Application Load Balancer를 생성합니다.
- 애플리케이션 로드 밸런서를 위한 HTTPS 리스너를 생성합니다.
참고: HTTPS 리스너만 authenticate-cognito 및 authenticate-oidc 규칙 작업 유형을 지원합니다.
Application Load Balancer의 DNS 이름 가져오기
다음 단계를 완료하십시오.
- Amazon Elastic Compute Cloud(Amazon EC2) 콘솔을 엽니다.
- 탐색 창의 로드 밸런싱 아래에서 로드 밸런서를 선택합니다.
- Application Load Balancer를 선택합니다.
- 세부 정보 탭에서 이후 단계에서 사용할 로드 밸런서의 DNS 이름을 기록해 둡니다.
Amazon Cognito 사용자 풀 생성 및 구성
다음 단계를 완료하십시오.
- Amazon Cognito 콘솔을 엽니다.
- 탐색 창에서 사용자 풀 생성을 선택합니다.
참고: 사용자 풀을 생성할 때 프로덕션에 사용할 설정을 구성하십시오. 사용자 풀을 생성한 후에는 일부 사용자 풀 설정을 변경할 수 없습니다. 자세한 내용은 Amazon Cognito 사용자 풀을 생성한 후 속성을 변경하려면 어떻게 해야 합니까?를 참조하십시오.
- 사용자 풀의 앱 클라이언트를 구성합니다.
앱 클라이언트를 구성할 때 클라이언트 보안키 생성 라디오 버튼을 선택합니다. 자세한 내용은 Amazon Cognito 사용 준비를 참조하십시오.
- 탐색 창에서 사용자 풀을 선택한 다음 원하는 사용자 풀을 선택합니다. 이후 단계에서 사용할 사용자 풀 ID를 기록해 둡니다.
- 사용자 풀의 앱 통합 탭을 선택한 다음 사용자 풀의 도메인을 추가합니다.
- 사용자 풀의 앱 통합 탭에서 앱 클라이언트 및 분석 섹션에 있는 앱 클라이언트를 선택합니다.
- 앱 클라이언트 페이지의 앱 클라이언트 정보에서 이후 단계에서 사용할 클라이언트 ID를 기록해 둡니다.
- 호스팅 UI 섹션에서 편집을 선택합니다.
- 콜백 URL 추가를 선택한 다음 https://load-balancer-dns-name/oauth2/idpresponse와 DNS 이름을 입력합니다. CNAME 레코드를 사용하여 Application Load Balancer에 사용자 지정 도메인을 매핑한 경우 https://CNAME/oauth2/idpresponse와 사용자 지정 도메인 이름을 입력합니다.
참고: DNS 이름에는 대문자를 사용할 수 없습니다.
- 로그아웃 URL 추가를 선택한 다음 사용자가 로그아웃한 후 리디렉션할 URL을 입력합니다. 리디렉션을 테스트하려면 **https://example.com/**과 같은 유효한 URL을 입력하면 됩니다.
- 자격 증명 제공업체에서 Cognito 사용자 풀을 선택합니다.
- OAuth 2.0 권한 부여 유형에서 권한 부여 코드 부여를 선택합니다. 사용 사례에 맞는 추가 OAuth 권한 부여 유형을 선택합니다.
- OpenID Connect 범위에서 OpenID를 선택합니다. OpenID 범위는 ID 토큰을 반환합니다. 사용 사례에 맞는 OpenID Connect(OIDC) 범위를 추가로 선택합니다.
- 변경 사항 저장을 선택합니다.
자세한 내용은 사용자 풀 및 앱 클라이언트 구성 업데이트 및 타사 자격 증명 제공업체를 통한 사용자 풀 로그인을 참조하십시오.
Application Load Balancer 구성
다음 단계를 완료하십시오.
- Amazon EC2 콘솔을 엽니다.
- 탐색 창의 로드 밸런싱 아래에서 로드 밸런서를 선택합니다.
- Application Load Balancer를 선택합니다.
- 리스너 및 규칙 탭에서 HTTPS 프로토콜을 선택합니다.
- 규칙 관리를 선택한 다음 규칙 편집을 선택합니다.
- 리스너 규칙 섹션에서 업데이트하려는 기본 규칙을 선택합니다.
- 작업을 선택한 다음, 규칙 편집을 선택합니다.
- HTTPS 리스너 기본 규칙에 대해 다음 설정을 구성합니다.
인증에서 OpenID 또는 Amazon Cognito 사용을 선택합니다.
자격 증명 제공업체에서 Amazon Cognito를 선택합니다.
사용자 풀에서 사용자 풀 ID를 선택합니다.
앱 클라이언트에서 클라이언트 ID를 선택합니다.
고급 인증 설정을 확장합니다.
세션 쿠키의 이름을 지정합니다.
세션 제한 시간을 설정합니다. 기본값은 7일입니다.
범위에 사용자 풀 앱 클라이언트에 대해 구성한 범위를 공백으로 구분하여 입력합니다. 범위는 사용자 풀의 OIDC 구성에서 찾을 수 있습니다. 예를 들어 scopes_supported 값이 ["openid","email","phone","profile"]인 경우openid email phone profile을 입력합니다.
인증되지 않은 요청에 대한 작업은 기본값으로 둡니다.
(선택 사항) 인증 중에 Cognito와 같은 자격 증명 제공업체에 파라미터를 추가하려면 추가 요청 파라미터 - 선택 사항을 확장합니다. 예를 들어 Cognito 사용자 풀에서 Google이 자체 자격 증명 제공업체인 경우 추가 파라미터인 **{Key: identity_provider, Value: Google}**을 추가할 수 있습니다. 요청 파라미터에 대한 자세한 내용은 요청 파라미터를 참조하십시오.
라우팅 작업에서 대상 그룹으로 전달을 선택한 다음 대상 그룹을 선택합니다.
(선택 사항) 사용 사례에 필요하면 대상 그룹 고정성에서 대상 그룹 고정성 활성화를 선택합니다.
- 다음과 같은 보안 리스너 설정을 구성합니다.
보안 정책에서 사용 사례에 적합한 보안 정책을 선택합니다.
기본 SSL/TLS 서버 인증서에서 인증서 소스를 선택합니다.
- 변경 사항 저장을 선택합니다.
설정 테스트
웹 브라우저에서 다음 URL 중 하나를 입력합니다.
- https://load-balancer-dns-name/
- https://CNAME/
참고: load-balancer-dns-name을 DNS 이름으로, CNAME을 사용자 지정 도메인으로 대체하십시오.
URL을 입력하면 사용자 풀의 Amazon Cognito 호스팅 웹 UI로 리디렉션됩니다. 사용자가 로그인하고 사용자 풀이 사용자를 인증하면 사용자는 대상으로 리디렉션됩니다.
관련 정보
Application Load Balancer 시작하기
내장된 인증 Application Load Balancer로 간편 로그인
Application Load Balancer의 리스너 규칙
OIDC 사용자 풀 IdP 인증 흐름