기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon Cognito 사용자 풀로 인증
Amazon Cognito에서는 다양한 방법으로 사용자를 인증할 수 있습니다. 사용자는 암호와 WebAuthn 패스키로 로그인할 수 있습니다. Amazon Cognito는 이메일 또는 SMS 메시지로 일회용 암호를 보낼 수 있습니다. 자체 문제 및 응답 시퀀스를 오케스트레이션하는 Lambda 함수를 구현할 수 있습니다. 다음은 인증 흐름입니다. 인증 흐름에서 사용자는 보안 암호를 제공하고 Amazon Cognito는 보안 암호를 확인한 다음 애플리케이션이 OIDC 라이브러리로 처리할 수 있도록 JSON 웹 토큰(JWT)을 발급합니다. 이 장에서는 다양한 애플리케이션 환경에서 다양한 인증 흐름에 맞게 사용자 풀 및 앱 클라이언트를 구성하는 방법을 설명합니다. 관리형 로그인의 호스팅 로그인 페이지를 사용하고 AWS SDK에서 자체 로직 및 프런트 엔드를 빌드하는 옵션을 다룹니다.
도메인 유무에 관계없이 모든 사용자 풀은 사용자 풀 API에서 사용자를 인증할 수 있습니다. 사용자 풀에 도메인을 추가하면 사용자 풀 엔드포인트를 사용할 수 있습니다. 사용자 풀 API는 다양한 권한 부여 모델 및 API 요청의 요청 흐름을 지원합니다.
Amazon Cognito는 사용자의 ID를 확인하기 위해 이메일, SMS 메시지, 일회용 암호 및 패스키와 같은 암호 외에도 여러 유형의 문제를 통합하는 인증 흐름을 지원합니다.
세부 정보를 구성하기 전에 애플리케이션에 맞는 인증 접근 방식을 선택합니다. 다음 결정 도우미는 두 개의 진입점과 사용자 지정 빌드 애플리케이션 내에서 두 개의 초기 로그인 흐름을 요약합니다. 각 옵션은 세부 섹션으로 연결됩니다.
- Amazon Cognito에서 로그인 페이지를 호스팅하거나 자체 프런트 엔드를 빌드하도록 하시겠습니까?
-
가장 낮은 경로를 원하는 경우 관리형 로그인을 사용합니다. Amazon Cognito는 로그인, 로그아웃 및 암호 재설정 페이지를 호스팅하고 애플리케이션은 OpenID Connect(OIDC) 신뢰 당사자 라이브러리를 사용하여 결과를 처리합니다. 관리형 로그인은 사용자 풀 및 앱 클라이언트 구성에서 허용하는 인증 방법을 자동으로 제공합니다.
자체 UI를 빌드하고 로그인 로직을 제어하려면 AWS SDK를 사용합니다. 애플리케이션에서 사용자 풀 API를 직접 호출하고 챌린지-응답 로직을 구현합니다.
- 사용자 지정 빌드 애플리케이션에서 사용자로부터 로그인 방법을 수집하나요, 아니면 미리 선언하나요?
-
사용자에게 사용 가능한 로그인 방법 목록을 제공하고 선택하도록 하려면 선택 기반 인증(
USER_AUTH흐름)을 선택합니다. 이 흐름은 암호 없는 패스키 로그인을 제공하는 유일한 방법입니다.애플리케이션이 사용자가 로그인하고와 같이 미리 흐름을 선언하는 방법을 이미 알고 있는 경우 클라이언트 기반 인증을 선택합니다
USER_SRP_AUTH. 클라이언트 기반 인증은 사용자 지정 인증 및 새로 고침 토큰 흐름을 사용하는 유일한 방법입니다. - 선택 기반 인증을 위한 사전 조건
-
선택 기반 인증은 관리형 로그인과 AWS SDKs 모두에 적용됩니다. 이를 사용하려면 앱 클라이언트의 허용된 인증 흐름
ALLOW_USER_AUTH에를 추가합니다. 암호 없는 및 패스키 메서드에는 관리형 로그인 도메인과 Lite 티어(Essentials 또는 Plus) 이상의 기능 계획이 추가로 필요합니다.
주제
인증 세션의 예
다음 다이어그램과 단계별 가이드는 사용자가 애플리케이션에 로그인하는 일반적인 시나리오를 보여줍니다. 예시 애플리케이션은 사용자에게 몇 가지 로그인 옵션을 제공합니다. 자격 증명을 입력하여 하나를 선택하고, 추가 인증 요소를 제공하고, 로그인합니다.
사용자가 사용자 이름과 암호로 로그인하거나, 이메일 메시지에서 일회용 코드를 요청하거나, 지문 옵션을 선택할 수 있는 로그인 페이지가 있는 애플리케이션을 가정해 보겠습니다.
-
로그인 프롬프트: 애플리케이션에 로그인 버튼이 있는 홈 화면이 표시됩니다.
-
로그인 요청: 사용자가 로그인을 선택합니다. 쿠키 또는 캐시에서 애플리케이션은 사용자 이름을 검색하거나 입력하라는 메시지를 표시합니다.
-
요청 옵션: 애플리케이션에서
USER_AUTH흐름이 포함된InitiateAuthAPI 요청으로 사용자의 로그인 옵션을 요청하여 사용자에게 사용 가능한 로그인 방법을 요청합니다. -
로그인 옵션 전송: Amazon Cognito는
PASSWORD,EMAIL_OTP및WEB_AUTHN으로 응답합니다. 응답에는 다음 응답에서 재생할 수 있는 세션 식별자가 포함되어 있습니다. -
표시 옵션: 애플리케이션에 사용자가 사용자 이름과 암호를 입력하거나, 일회용 코드를 가져오거나, 지문을 스캔할 수 있는 UI 요소가 표시됩니다.
-
옵션/자격 증명 입력 선택: 사용자가 사용자 이름과 암호를 입력합니다.
-
인증 시작: 애플리케이션에서 사용자 이름-암호 로그인을 확인하고 사용자 이름과 암호를 제공하는
RespondToAuthChallengeAPI 요청과 함께 사용자의 로그인 정보를 제공합니다. -
자격 증명 검증: Amazon Cognito가 사용자의 자격 증명을 확인합니다.
-
추가 문제: 사용자에게 인증 앱으로 구성된 다중 인증이 있습니다. Amazon Cognito는
SOFTWARE_TOKEN_MFA문제를 반환합니다. -
문제 프롬프트: 애플리케이션에 사용자의 인증 앱에서 시간 기반 일회용 암호(TOTP)를 요청하는 양식이 표시됩니다.
-
문제 답변: 사용자가 TOTP를 제출합니다.
-
문제에 응답: 다른
RespondToAuthChallenge요청에서 애플리케이션은 사용자의 TOTP를 제공합니다. -
문제 응답 검증: Amazon Cognito는 사용자의 코드를 확인하고 현재 사용자에게 추가 문제를 발행하지 않도록 사용자 풀이 구성되어 있는지 확인합니다.
-
문제 토큰: Amazon Cognito는 ID, 액세스 및 새로 고침 JSON 웹 토큰(JWT)을 반환합니다. 사용자의 초기 인증이 완료되었습니다.
-
토큰 저장: 애플리케이션은 사용자 데이터를 참조하고, 리소스에 대한 액세스를 승인하고, 토큰이 만료되면 토큰을 업데이트할 수 있도록 사용자의 토큰을 캐싱합니다.
-
승인된 콘텐츠 렌더링: 애플리케이션은 ID 및 역할을 기반으로 리소스에 대한 사용자의 액세스를 결정하고 애플리케이션 콘텐츠를 제공합니다.
-
액세스 콘텐츠: 사용자가 로그인하고 애플리케이션 사용을 시작합니다.
-
토큰이 만료된 콘텐츠 요청: 나중에 사용자가 권한이 필요한 리소스를 요청합니다. 사용자의 캐시된 토큰이 만료되었습니다.
-
새로 고침 토큰: 애플리케이션에서 사용자의 저장된 새로 고침 토큰을 사용하여
InitiateAuth요청을 만듭니다. -
문제 토큰: Amazon Cognito는 새로운 ID와 액세스 JWT를 반환합니다. 자격 증명에 대한 추가 프롬프트 없이 사용자의 세션이 안전하게 새로 고쳐집니다.
AWS Lambda 트리거를 사용하여 사용자가 인증하는 방식을 사용자 지정할 수 있습니다. 이러한 트리거는 인증 흐름의 일부로서 고유 챌린지를 발행 및 확인할 수 있습니다.
안전한 백엔드 서버에 관리자 인증 흐름을 사용할 수도 있습니다. 사용자 마이그레이션 인증 흐름을 사용하면 사용자가 암호를 재설정할 필요 없이 사용자 마이그레이션을 수행할 수 있습니다.