기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon Cognito 사용자 풀을 사용한 인증 프로세스는 사용자가 처음 선택하고, 자격 증명을 제출하고, 추가 문제에 대응하는 흐름으로 가장 잘 설명할 수 있습니다. 애플리케이션에서 관리형 로그인 인증을 구현하면 Amazon Cognito가 이러한 프롬프트 및 챌린지의 흐름을 관리합니다. 애플리케이션 백엔드에서 AWS SDK로 흐름을 구현할 때는 요청 로직을 구성하고, 사용자에게 입력을 요청하고, 문제에 대응해야 합니다.
애플리케이션 관리자는 사용자 특성, 보안 요구 사항 및 권한 부여 모델을 통해 사용자가 로그인하도록 허용하는 방법을 결정할 수 있습니다. 자신에게 다음과 같은 질문을 하세요.
-
사용자가 다른 자격 증명 공급자(IdPs)의 자격 증명으로 로그인하도록 허용하시겠습니까?
-
사용자 이름과 암호가 자격 증명으로 충분합니까?
-
사용자 이름 암호 인증에 대한 인증 요청을 가로챌 수 있나요? 애플리케이션이 암호를 전송하거나 해시와 솔트를 사용하여 인증을 협상하도록 해야 하나요?
-
사용자가 암호 입력을 건너뛰고 로그인하는 일회용 암호를 받도록 허용하시겠습니까?
-
사용자가 지문, 얼굴 또는 하드웨어 보안 키로 로그인하도록 허용하시겠습니까?
-
멀티 팩터 인증(MFA)이 필요한 경우는 언제입니까?
-
자격 증명을 다시 프롬프트하지 않고 사용자 세션을 유지하시겠습니까?
-
Amazon Cognito의 기본 제공 기능 이상으로 권한 부여 모델을 확장하고 싶나요?
이러한 질문에 대한 답변이 있으면 관련 기능을 활성화하고 애플리케이션이 수행하는 인증 요청에 구현하는 방법을 배울 수 있습니다.
사용자에 대한 로그인 흐름을 설정한 후 GetUserAuthFactors API 작업에 대한 요청을 통해 MFA 및 선택 기반 인증 요소의 현재 상태를 확인할 수 있습니다. 이 작업을 수행하려면 로그인한 사용자의 액세스 토큰으로 인증해야 합니다. 사용자 인증 요인과 MFA 설정을 반환합니다.
주제
타사 IdPs로 로그인
Amazon Cognito 사용자 풀은 Sign in with Apple, Login with Amazon, OpenID Connect(OIDC) 서비스와 같은 IdPs 간 인증 세션의 중간 브로커 역할을 합니다. 이 프로세스를 페더레이션 로그인 또는 페더레이션 인증이라고도 합니다. 페더레이션 인증은 앱 클라이언트에 빌드할 수 있는 인증 흐름을 사용하지 않습니다. 대신 구성된 사용자 풀 IdPs 앱 클라이언트에 할당합니다. 페더레이션 로그인은 사용자가 관리형 로그인에서 IdP를 선택하거나 애플리케이션이 IdP 로그인 페이지로 리디렉션된 세션을 호출할 때 발생합니다.
페더레이션 로그인을 사용하면 기본 및 MFA 인증 요소를 사용자의 IdP에 위임합니다. Amazon Cognito는 로컬 사용자에 연결하지 않는 한이 섹션의 다른 고급 흐름을 페더레이션 사용자에게 추가하지 않습니다. 연결되지 않은 페더레이션 사용자에게는 사용자 이름이 있지만 브라우저 기반 흐름과 관계없이 로그인에 일반적으로 사용되지 않는 매핑된 속성 데이터의 저장소입니다.
구현 리소스
영구 암호로 로그인
Amazon Cognito 사용자 풀에서는 모든 사용자에게 사용자 이름이 있습니다. 전화번호, 이메일 주소 또는 선택한 식별자 또는 관리자가 제공한 식별자일 수 있습니다. 이 유형의 사용자는 사용자 이름과 암호로 로그인하고 선택적으로 MFA를 제공할 수 있습니다. 사용자 풀은 퍼블릭 또는 IAM 인증 API 작업 및 SDK 메서드를 사용하여 사용자 이름 암호 로그인을 수행할 수 있습니다. 애플리케이션은 인증을 위해 암호를 사용자 풀로 직접 전송할 수 있습니다. 사용자 풀은 인증 성공의 결과인 추가 챌린지 또는 JSON 웹 토큰(JWTs)으로 응답합니다.
사용자 이름과 암호를 사용하여 로그인을 활성화하려면 앱 클라이언트가 허용하도록 구성합니다. Amazon Cognito 콘솔에서 사용자 풀 구성의 애플리케이션 아래에 있는 앱 클라이언트 메뉴로 이동합니다. 클라이언트 측 모바일 또는 네이티브 앱에 대한 사용자 이름 암호 로그인을 허용하려면 앱 클라이언트를 선택하거나 생성하고 사용자 이름과 암호로 로그인: ALLOW_USER_PASSWORD_AUTH를 선택합니다. 서버 측 또는 웹 앱에 대한 사용자 이름 암호 로그인을 허용하려면 서버 측 관리 자격 증명으로 로그인: ALLOW_ADMIN_USER_PASSWORD_AUTH를 선택합니다.
사용자 풀 API에서 CreateUserPoolClient 또는 UpdateUserPoolClient 요청의 ExplicitAuthFlows
필수 옵션으로를 구성합니다.
"ExplicitAuthFlows": [
"ALLOW_USER_PASSWORD_AUTH",
"ALLOW_ADMIN_USER_PASSWORD_AUTH"
]
영구 암호 및 보안 페이로드로 로그인
사용자 풀에서 사용자 이름 암호 로그인 방법의 또 다른 형태는 보안 원격 암호(SRP) 프로토콜을 사용하는 것입니다. 이 옵션은 사용자 풀이 확인할 수 있는 암호 해시와 솔트와 같은 암호에 대한 지식 증명을 전송합니다. Amazon Cognito에 대한 요청에 읽을 수 있는 보안 암호 정보가 없는 경우 사용자가 입력한 암호를 처리하는 유일한 엔터티는 애플리케이션입니다. SRP 인증에는 SDK에서 가져올 수 있는 기존 구성 요소에서 가장 잘 수행되는 수학적 계산이 포함됩니다. SRP는 일반적으로 모바일 앱과 같은 클라이언트 측 애플리케이션에서 구현됩니다. 프로토콜에 대한 자세한 내용은 Stanford SRP 홈페이지를 참조하세요
사용자 이름과 암호를 사용하여 로그인을 활성화하려면 앱 클라이언트가 허용하도록 구성합니다. Amazon Cognito 콘솔에서 사용자 풀 구성의 애플리케이션 아래에 있는 앱 클라이언트 메뉴로 이동합니다. 클라이언트 측 모바일 또는 네이티브 앱에 대한 사용자 이름 암호 로그인을 허용하려면 앱 클라이언트를 선택하거나 생성하고 사용자 이름과 암호를 사용하여 로그인: ALLOW_USER_PASSWORD_AUTH를 선택합니다. 서버 측 또는 웹 앱에 대한 사용자 이름 암호 로그인을 허용하려면 서버 측 관리 자격 증명으로 로그인: ALLOW_ADMIN_USER_PASSWORD_AUTH를 선택합니다.
사용자 풀 API에서 CreateUserPoolClient 또는 UpdateUserPoolClient 요청의 ExplicitAuthFlows
필수 옵션으로를 구성합니다.
"ExplicitAuthFlows": [
"ALLOW_USER_SRP_AUTH"
]
기본 제공 인증 흐름 및 챌린지
Amazon Cognito에는 표준 인증을 위한 AuthFlow
및 ChallengeName
값이 기본으로 포함되어 Secure Remote Password(SRP) 프로토콜을 통해 사용자 이름과 암호가 확인됩니다. AWS SDKs는 Amazon Cognito를 통해 이러한 흐름을 기본적으로 지원합니다.
이 흐름은 USER_SRP_AUTH
를 InitiateAuth
에 AuthFlow
로 보내면 시작됩니다. AuthParameters
의 USERNAME
및 SRP_A
값을 보내기도 합니다. InitiateAuth
호출이 성공하면 PASSWORD_VERIFIER
가 챌린지 파라미터의 ChallengeName
및 SRP_B
로 응답에 포함됩니다. 그러면 앱이 PASSWORD_VERIFIER
ChallengeName
및 ChallengeResponses
의 필수 파라미터를 사용하여 RespondToAuthChallenge
를 호출합니다. RespondToAuthChallenge
에 대한 호출이 성공하고 사용자가 로그인하는 경우 Amazon Cognito에서 토큰을 발급합니다. 사용자에 대해 멀티 팩터 인증(MFA)을 활성화한 경우 Amazon Cognito에서 SMS_MFA
의 ChallengeName
을 반환합니다. 앱은 RespondToAuthChallenge
에 대한 다른 호출을 통해 필요한 코드를 제공할 수 있습니다.
일회용 암호를 사용한 암호 없는 로그인
암호를 분실하거나 도난당할 수 있습니다. 사용자가 확인된 이메일 주소, 전화번호 또는 인증 앱에 액세스할 수 있는지만 확인할 수 있습니다. 이에 대한 해결책은 암호 없는 로그인입니다. 애플리케이션에서 사용자에게 사용자 이름, 이메일 주소 또는 전화번호를 입력하라는 메시지를 표시할 수 있습니다. 그런 다음 Amazon Cognito는 확인해야 하는 일회용 암호(OTP)를 생성합니다. 성공한 코드는 인증을 완료합니다. 이 인증 흐름은 다중 인증(MFA)에 사용할 수 없습니다.
사용자가 암호 없는 인증의 일부로 SMS 또는 이메일 메시지에서 받은 코드를 올바르게 입력하면 사용자 풀은 사용자의 확인되지 않은 이메일 주소 또는 전화 번호 속성을 확인된 것으로 표시합니다. 이메일 주소 또는 전화번호UNCONFIRMED
를 자동으로 확인하도록 사용자 풀을 구성했는지 여부에 CONFIRMED
관계없이 사용자 상태도에서 로 변경되었습니다.
암호 없는 로그인을 사용하는 새로운 옵션
사용자 풀에서 암호 없는 인증을 활성화하면 일부 사용자 흐름의 작동 방식이 변경됩니다.
-
사용자는 암호 없이 가입하고 로그인할 때 암호 없는 요소를 선택할 수 있습니다. 관리자로서 암호 없이 사용자를 생성할 수도 있습니다.
-
CSV 파일로 가져오는 사용자는 암호 없는 팩터로 즉시 로그인할 수 있습니다. 로그인하기 전에 암호를 설정할 필요는 없습니다.
-
암호가 없는 사용자는
PreviousPassword
파라미터 없이 ChangePassword API 요청을 제출할 수 있습니다.
OTPs 사용한 자동 로그인
이메일 또는 SMS 메시지 OTPs를 사용하여 사용자 계정에 가입하고 확인하는 사용자는 확인 메시지와 일치하는 암호 없는 팩터로 자동으로 로그인할 수 있습니다. 관리형 로그인 UI에서 계정을 확인하고 확인 코드 전송 방법을 사용하여 OTP 로그인을 할 수 있는 사용자는 확인 코드를 제공한 후 자동으로 첫 번째 로그인을 진행합니다. AWS SDK를 사용하여 사용자 지정 빌드 애플리케이션에서 다음 파라미터를 InitiateAuth 또는 AdminInitiateAuth 작업에 전달합니다.
-
ConfirmSignUp API 응답의
Session
파라미터를Session
요청 파라미터로 사용합니다. -
의 AuthFlow입니다
USER_AUTH
.
EMAIL_OTP
또는의 PREFERRED_CHALLENGE를 전달할 수 SMS_OTP
있지만 필수는 아닙니다. Session
파라미터는 인증 증명을 제공하며 Amazon Cognito는 유효한 세션 코드를 전달할 AuthParameters
때를 무시합니다.
로그인 작업은 인증 성공, AuthenticationResult를 나타내는 응답을 반환하며, 다음 조건이 충족되면 추가 문제가 발생하지 않습니다.
-
Session
코드가 유효하고 만료되지 않았습니다. -
사용자는 요청된
PREFERRED_CHALLENGE
인증 방법을 사용할 수 있습니다.
콘솔
암호 없는 로그인을 활성화하려면 하나 이상의 암호 없는 유형으로 기본 로그인을 허용하도록 사용자 풀을 구성한 다음 USER_AUTH
흐름을 허용하도록 앱 클라이언트를 구성합니다. Amazon Cognito 콘솔에서 사용자 풀 구성의 인증 아래에 있는 로그인 메뉴로 이동합니다. 선택 기반 로그인 옵션을 편집하고 이메일 메시지 일회용 암호 또는 SMS 메시지 일회용 암호를 선택합니다. 두 옵션을 모두 활성화할 수 있습니다. 변경 내용을 저장합니다.
앱 클라이언트 메뉴로 이동하여 앱 클라이언트를 선택하거나 새 클라이언트를 생성합니다. 편집을 선택하고 로그인 시 인증 유형 선택: ALLOW_USER_AUTH를 선택합니다.
API/SDK
사용자 풀 API에서 CreateUserPool 또는 UpdateUserPool 요청의 SignInPolicy
적절한 암호 없는 옵션으로를 구성합니다.
"SignInPolicy": {
"AllowedFirstAuthFactors": [
"EMAIL_OTP",
"SMS_OTP"
]
}
CreateUserPoolClient 또는 UpdateUserPoolClient 요청의 ExplicitAuthFlows
필수 옵션으로 앱 클라이언트를 구성합니다.
"ExplicitAuthFlows": [
"ALLOW_USER_AUTH"
]
패스키 로그인
패스키는 안전하며 사용자에게 비교적 적은 작업 수준을 부과합니다. 패스키 로그인은 사용자가 인증할 수 있는 외부 디바이스인 인증자를 사용합니다. 일반 암호는 사용자를 피싱, 암호 추측 및 자격 증명 도용과 같은 취약성에 노출시킵니다. 패스키를 사용하면 애플리케이션이 정보 시스템에 연결되거나 내장된 휴대폰 및 기타 디바이스의 고급 보안 조치를 활용할 수 있습니다. 일반적인 패스키 로그인 워크플로는 iOS 키체인 또는 Google Chrome 암호 관리자와 같이 암호 또는 자격 증명 관리자를 호출하는 디바이스 호출로 시작됩니다. 온디바이스 자격 증명 관리자는 패스키를 선택하고 기존 자격 증명 또는 디바이스 잠금 해제 메커니즘으로 권한을 부여하라는 메시지를 표시합니다. 최신 휴대폰에는 얼굴 스캐너, 지문 스캐너, 잠금 해제 패턴 및 기타 메커니즘이 있으며, 일부는 사용자가 알고 있는 것과 강력한 인증 원칙을 동시에 충족합니다. 생체 인식으로 패스키를 인증하는 경우 패스키는 사용자가 있는 것을 나타냅니다.
암호를 지문, 얼굴 또는 보안 키 인증으로 바꿀 수 있습니다. 패스키 또는 WebAuthn 인증입니다. 애플리케이션 개발자는 사용자가 암호로 처음 로그인한 후 생체 인식 디바이스를 등록하도록 허용하는 것이 일반적입니다. Amazon Cognito 사용자 풀을 사용하면 애플리케이션에서 사용자를 위해이 로그인 옵션을 구성할 수 있습니다. 패스키 인증은 멀티 팩터 인증(MFA)에 사용할 수 없습니다.
패스키란 무엇입니까?
패스키는 복잡한 암호를 기억하거나 OTPs. 패스키는 W3C(World Wide Web Consortium
사용자가 웹 사이트 또는 앱에 인증자를 등록하면 인증자는 퍼블릭-프라이빗 키 페어를 생성합니다. WebAuthn 브라우저 및 플랫폼은 웹 사이트 또는 앱의 애플리케이션 백엔드에 퍼블릭 키를 제출합니다. 인증자는 사용자 및 애플리케이션에 대한 프라이빗 키, 키 IDs 및 메타데이터를 유지합니다. 사용자가 등록된 인증자로 등록된 애플리케이션에서 인증하려는 경우 애플리케이션은 임의의 챌린지를 생성합니다. 이 챌린지에 대한 응답은 해당 애플리케이션 및 사용자에 대한 인증자의 프라이빗 키와 관련 메타데이터로 생성된 챌린지의 디지털 서명입니다. 브라우저 또는 애플리케이션 플랫폼은 디지털 서명을 수신하여 애플리케이션 백엔드로 전달합니다. 그런 다음 애플리케이션은 저장된 퍼블릭 키를 사용하여 서명을 검증합니다.
참고
애플리케이션은 사용자가 인증자에 제공하는 인증 보안 암호를 수신하지 않으며 프라이빗 키에 대한 정보도 수신하지 않습니다.
다음은 현재 출시된 인증자의 몇 가지 예와 기능입니다. 인증자는 이러한 범주 중 일부 또는 전부를 충족할 수 있습니다.
-
일부 인증자는 액세스 권한을 부여하기 전에 PIN, 얼굴 또는 지문을 사용한 생체 인식 입력 또는 암호와 같은 요소를 사용하여 사용자 확인을 수행하여 합법적인 사용자만 작업을 승인할 수 있도록 합니다. 다른 인증자는 사용자 확인 기능을 가지고 있지 않으며, 일부 인증자는 애플리케이션에 필요하지 않은 경우 사용자 확인을 건너뛸 수 있습니다.
-
YubiKey 하드웨어 토큰과 같은 일부 인증자는 이식이 가능합니다. USB, Bluetooth 또는 NFC 연결을 통해 디바이스와 통신합니다. 일부 인증자는 로컬이며 PC의 Windows Hello 또는 iPhone의 Face ID와 같은 플랫폼에 바인딩됩니다. 모바일 디바이스와 같이 충분히 작은 경우 사용자가 디바이스 바인딩 인증자를 운반할 수 있습니다. 때때로 사용자는 무선 통신이 가능한 다양한 플랫폼과 하드웨어 인증자를 연결할 수 있습니다. 예를 들어 데스크톱 브라우저의 사용자는 QR 코드를 스캔할 때 스마트폰을 패스키 인증자로 사용할 수 있습니다.
-
일부 플랫폼 바운드 패스키는 클라우드와 동기화되므로 여러 위치에서 사용할 수 있습니다. 예를 들어 iPhones Face ID 패스키는 패스키 메타데이터를 iCloud 키체인의 사용자 Apple 계정과 동기화합니다. 이러한 패스키는 사용자가 각 디바이스를 독립적으로 등록하도록 요구하는 대신 Apple 디바이스에 원활한 인증을 부여합니다. 사용자가 앱을 설치한 모든 플랫폼에서 1Password, Dashlane 및 Bitwarden 동기화 패스키와 같은 소프트웨어 기반 인증자 앱.
WebAuthn 용어에서 웹 사이트와 앱은 신뢰 당사자입니다. 각 패스키는 패스키 인증을 수락하는 웹 사이트 또는 앱을 나타내는 통합 식별자인 특정 신뢰 당사자 ID와 연결됩니다. 개발자는 적절한 인증 범위를 가지려면 신뢰 당사자 ID를 신중하게 선택해야 합니다. 일반적인 신뢰 당사자 ID는 웹 서버의 루트 도메인 이름입니다. 이 신뢰 당사자 ID 사양이 있는 패스키는 해당 도메인 및 하위 도메인에 대해 인증할 수 있습니다. 사용자가 액세스하려는 웹 사이트의 URL이 신뢰 당사자 ID와 일치하지 않는 경우 브라우저 및 플랫폼은 패스키 인증을 거부합니다. 마찬가지로 모바일 앱의 경우 애플리케이션이 신뢰 당사자 ID로 표시된 경로에서 사용할 수 있도록 하는 .well-known
연결 파일에 앱 경로가 있는 경우에만 패스키를 사용할 수 있습니다.
패스키를 검색할 수 있습니다. 사용자가 사용자 이름을 입력할 필요 없이 브라우저 또는 플랫폼에서 자동으로 인식하고 사용할 수 있습니다. 사용자가 패스키 인증을 지원하는 웹 사이트 또는 앱을 방문하면 브라우저 또는 플랫폼이 이미 알고 있는 패스키 목록에서 선택하거나 QR 코드를 스캔할 수 있습니다.
Amazon Cognito는 패스키 인증을 어떻게 구현하나요?
패스키는 Lite 이외의 모든 기능 계획에서 사용할 수 있는 옵트인 기능입니다. 선택 기반 인증 흐름에서만 사용할 수 있습니다. 관리형 로그인을 사용하면 Amazon Cognito가 패스키 인증 로직을 처리합니다. SDK의 Amazon Cognito 사용자 풀 API AWS SDKs를 사용하여 애플리케이션 백엔드에서 패스키 인증을 수행할 수도 있습니다.
Amazon Cognito는 두 개의 비대칭 암호화 알고리즘 ES256(-7) 및 RS256(-257) 중 하나를 사용하여 생성된 패스키를 인식합니다. 대부분의 인증자는 두 알고리즘을 모두 지원합니다. 기본적으로 사용자는 하드웨어 토큰, 모바일 스마트폰, 소프트웨어 인증 앱 등 모든 유형의 인증자를 설정할 수 있습니다. Amazon Cognito는 현재 증명
사용자 풀에서 사용자 확인을 기본 설정 또는 필수로 구성할 수 있습니다. 이 설정은 값을 제공하지 않는 API 요청에서 기본 설정으로 기본 설정되며 Amazon Cognito 콘솔에서 기본 설정이 기본적으로 선택됩니다. 사용자 확인을 기본 설정으로 설정하면 사용자는 사용자 확인 기능이 없는 인증자를 설정할 수 있으며 사용자 확인 없이 등록 및 인증 작업이 성공할 수 있습니다. 패스키 등록 및 인증에서 사용자 확인을 요구하려면이 설정을 필수로 변경합니다.
패스키 구성에서 설정한 신뢰 당사자(RP) ID는 중요한 결정입니다. 달리 지정하지 않고 도메인 브랜딩 버전이 관리형 로그인인 경우 사용자 풀은 기본적으로 사용자 지정 도메인의 이름을 RP ID로 예상합니다. 사용자 지정 도메인이 없고 달리 지정하지 않으면 사용자 풀은 기본적으로 접두사 도메인의 RP ID로 설정됩니다. 퍼블릭 접미사 목록(PSL)에 없는 도메인 이름으로 RP ID를 구성할 수도 있습니다. RP ID 항목은 관리형 로그인 및 SDK 인증의 패스키 등록 및 인증에 적용됩니다. 패스키는 Amazon Cognito가 RP ID가 도메인인 .well-known
연결 파일을 찾을 수 있는 모바일 애플리케이션에서만 작동합니다. 웹 사이트 또는 앱을 공개적으로 사용할 수 있기 전에 신뢰 당사자 ID의 값을 결정하고 설정하는 것이 가장 좋습니다. RP ID를 변경하는 경우 사용자는 새 RP ID로 다시 등록해야 합니다.
각 사용자는 최대 20개의 패스키를 등록할 수 있습니다. 사용자 풀에 한 번 이상 로그인한 후에만 패스키를 등록할 수 있습니다. 관리형 로그인은 패스키 등록에서 상당한 노력을 제거합니다. 사용자 풀 및 앱 클라이언트에 대해 패스키 인증을 활성화하면 관리형 로그인 도메인이 있는 사용자 풀은 최종 사용자가 새 사용자 계정에 가입한 후 패스키를 등록하도록 알립니다. 또한 언제든지 사용자의 브라우저를 호출하여 패스키 등록을 위한 관리형 로그인 페이지로 보낼 수 있습니다. Amazon Cognito가 패스키 인증을 시작하려면 사용자가 사용자 이름을 제공해야 합니다. 관리형 로그인은 이를 자동으로 처리합니다. 로그인 페이지에 사용자 이름을 묻는 메시지가 표시되고, 사용자에게 하나 이상의 패스키가 등록되었는지 확인한 다음 패스키 로그인을 묻는 메시지가 표시됩니다. 마찬가지로 SDK 기반 애플리케이션은 사용자 이름을 입력하라는 메시지를 표시하고 인증 요청에 제공해야 합니다.
패스키를 사용하여 사용자 풀 인증을 설정하고 사용자 지정 도메인과 접두사 도메인이 있는 경우 RP ID는 기본적으로 사용자 지정 도메인의 정규화된 도메인 이름(FQDN)으로 설정됩니다. Amazon Cognito 콘솔에서 접두사 도메인을 RP ID로 설정하려면 사용자 지정 도메인을 삭제하거나 접두사 도메인의 FQDN을 타사 도메인으로 입력합니다.
콘솔
패스키로 로그인을 활성화하려면 하나 이상의 암호 없는 유형으로 기본 로그인을 허용하도록 사용자 풀을 구성한 다음 USER_AUTH
흐름을 허용하도록 앱 클라이언트를 구성합니다. Amazon Cognito 콘솔에서 사용자 풀 구성의 인증 아래에 있는 로그인 메뉴로 이동합니다. 선택 기반 로그인에 대한 옵션을 편집하고 사용 가능한 선택 목록에 패스키를 추가합니다.
인증 방법 메뉴로 이동하여 패스키를 편집합니다.
-
사용자 확인은 사용자 풀에 현재 사용자에게 패스키에 대한 권한이 있는지 추가로 확인하는 패스키 디바이스가 필요한지 여부를 설정하는 것입니다. 사용자에게 사용자 확인으로 디바이스를 구성하도록 권장하지만 필요하지는 않으려면 기본 설정을 선택합니다. 사용자 확인이 있는 디바이스만 지원하려면 필수를 선택합니다. 자세한 내용은 w3.org://https://www.com에서 사용자 확인을
참조하세요. -
신뢰 당사자 ID에 대한 도메인은 애플리케이션이 사용자의 패스키 등록 요청에 전달할 식별자입니다. 사용자 패스키의 발급자와 신뢰 관계의 대상을 설정합니다. 신뢰 당사자 ID는 다음과 같을 수 있습니다.
- Cognito 도메인
-
사용자 풀의 Amazon Cognito 접두사 도메인입니다.
- 사용자 지정 도메인
-
사용자 풀의 사용자 지정 도메인입니다.
- 타사 도메인
-
사용자 풀 관리형 로그인 페이지를 사용하지 않는 애플리케이션의 도메인입니다. 이 설정은 일반적으로 도메인이 없고 백엔드에서 AWS SDK 및 사용자 풀 API로 인증을 수행하는 사용자 풀과 연결됩니다.
앱 클라이언트 메뉴로 이동하여 앱 클라이언트를 선택하거나 새 클라이언트를 생성합니다. 편집을 선택하고 인증 흐름에서 로그인 시 인증 유형 선택: ALLOW_USER_AUTH를 선택합니다.
API/SDK
사용자 풀 API에서 CreateUserPool 또는 UpdateUserPool 요청의 SignInPolicy
적절한 패스키 옵션으로를 구성합니다. 패스키 인증 WEB_AUTHN
옵션에는 하나 이상의 다른 옵션이 포함되어야 합니다. 패스키 등록에는 기존 인증 세션이 필요합니다.
"SignInPolicy": {
"AllowedFirstAuthFactors": [
"PASSWORD",
"WEB_AUTHN"
]
}
SetUserPoolMfaConfig 요청의 WebAuthnConfiguration
파라미터에서 사용자 확인 기본 설정과 RP ID를 구성합니다. 패스키 인증 결과의 대상RelyingPartyId
인는 사용자 풀 접두사 또는 사용자 지정 도메인이거나 사용자가 선택한 도메인일 수 있습니다.
"WebAuthnConfiguration": {
"RelyingPartyId": "example.auth.us-east-1.amazoncognito.com
",
"UserVerification": "preferred
"
}
CreateUserPoolClient 또는 UpdateUserPoolClient 요청의 ExplicitAuthFlows
필수 옵션으로 앱 클라이언트를 구성합니다.
"ExplicitAuthFlows": [
"ALLOW_USER_AUTH"
]
로그인 후 MFA
사용자 이름-암호 흐름으로 로그인을 완료하는 사용자에게 이메일 메시지, SMS 메시지 또는 코드 생성 애플리케이션의 일회용 암호로 추가 확인을 요청하도록 설정할 수 있습니다. MFA는 일회용 암호 또는 MFA가 포함되지 않은 WebAuthn 패스키를 사용하는 첫 번째 인증 요소인 암호 없는 로그인과 구별됩니다. 사용자 풀의 MFA는 챌린지-응답 모델로, 사용자가 먼저 암호를 알고 있음을 입증한 다음 등록된 보조 팩터 디바이스에 액세스할 수 있음을 입증합니다.
구현 리소스
새로 고침 토큰
자격 증명을 다시 입력하지 않고 사용자를 로그인 상태로 유지하려는 경우 새로 고침 토큰은 애플리케이션에서 사용자의 세션을 유지하기 위해 필요한 도구입니다. 애플리케이션은 사용자 풀에 새로 고침 토큰을 제공하고 새 ID 및 액세스 토큰과 교환할 수 있습니다. 토큰 새로 고침을 사용하면 로그인한 사용자가 여전히 활성 상태인지 확인하고, 업데이트된 속성 정보를 가져오고, 사용자 개입 없이 액세스 제어 권한을 업데이트할 수 있습니다.
구현 리소스
사용자 지정 인증
여기에 나열되지 않은 사용자에 대한 인증 방법을 구성할 수 있습니다. Lambda 트리거를 사용한 사용자 지정 인증으로이 작업을 수행할 수 있습니다. 일련의 Lambda 함수에서 Amazon Cognito는 챌린지를 실행하고, 사용자가 답변해야 하는 질문을 하고, 답변의 정확성을 확인한 다음 다른 챌린지를 실행해야 하는지 여부를 결정합니다. 질문과 답변에는 보안 질문, CAPTCHA 서비스에 대한 요청, 외부 MFA 서비스 API에 대한 요청 또는이 모든 것이 순서대로 포함될 수 있습니다.
구현 리소스
사용자 지정 인증 흐름
Amazon Cognito 사용자 풀에서는 사용자 지정 인증 흐름을 사용할 수 있게 할 수 있으므로 AWS Lambda 트리거를 사용하여 문제/응답 기반 인증 모델을 쉽게 생성할 수 있습니다.
사용자 지정 인증 흐름은 여러 요구 사항에 맞추어 사용자 지정 챌린지 및 응답 사이클을 허용하도록 고안되었습니다. 이 흐름은 사용할 인증 유형을 나타내고 초기 인증 파라미터를 제공하는 InitiateAuth
API 작업을 호출하면서 시작됩니다. Amazon Cognito는 다음 정보 유형 중 하나를 사용하여 InitiateAuth
호출에 응답합니다.
-
세션 및 파라미터와 함께 사용자에 대한 챌린지
-
사용자가 인증에 실패할 경우 오류
-
InitiateAuth
호출에서 사용자 로그인에 필요한 파라미터가 제공된 경우 ID, 액세스 및 새로 고침 토큰. (일반적으로 사용자나 앱은 먼저 챌린지에 답변해야 하지만 사용자 지정 코드에서 이를 결정해야 합니다.)
Amazon Cognito가 문제와 함께 InitiateAuth
호출에 응답하면 앱은 더 많은 입력을 수집하며 RespondToAuthChallenge
작업을 호출합니다. 이 호출은 문제 응답을 제공하고 세션에 다시 전달합니다. Amazon Cognito는 InitiateAuth
호출과 유사한 방식으로 RespondToAuthChallenge
호출에 응답합니다. 사용자가 로그인한 경우 Amazon Cognito에서 토큰을 제공하거나 사용자가 로그인하지 않은 경우 Amazon Cognito에서 다른 문제 또는 오류를 제공합니다. Amazon Cognito에서 다른 문제를 반환한 경우 사용자가 성공적으로 로그인하거나 오류가 반환될 때까지 시퀀스가 반복되고 앱에서 RespondToAuthChallenge
를 호출합니다. InitiateAuth
및 RespondToAuthChallenge
API 작업에 대한 자세한 내용은 API 설명서를 참조하세요.
사용자 지정 인증 흐름 및 챌린지
앱은 CUSTOM_AUTH
를 Authflow
로 지정해 InitiateAuth
를 호출하여 사용자 지정 인증 흐름을 시작할 수 있습니다. 사용자 지정 인증 흐름을 사용하면 세 개의 Lambda 트리거에서 문제 및 응답의 확인을 제어합니다.
-
DefineAuthChallenge
Lambda 트리거는 이전 문제와 응답의 세션 배열을 입력으로 사용합니다. 그리고 나서 다음 문제 이름 및 사용자가 인증되었는지 그리고 토큰이 부여될 수 있는지를 나타내는 부울을 생성합니다. 이 Lambda 트리거는 문제를 통해 사용자의 경로를 제어하는 상태 시스템입니다. -
CreateAuthChallenge
Lambda 트리거는 문제 이름을 입력으로 사용하고 문제 및 파라미터를 생성하여 응답을 평가합니다.DefineAuthChallenge
에서CUSTOM_CHALLENGE
를 다음 문제로 반환하면 인증 흐름에서CreateAuthChallenge
를 호출합니다. 이CreateAuthChallenge
Lambda 트리거는 다음 문제 유형을 문제 메타데이터 파라미터로 전달합니다. -
VerifyAuthChallengeResponse
Lambda 함수가 응답을 평가하고 부울을 반환하여 응답이 유효한지 여부를 나타냅니다.
사용자 지정 인증 흐름은 SRP 암호 확인 및 SMS를 통한 MFA와 같은 기본 제공 챌린지를 조합하여 사용할 수 있습니다. 또한 CAPTCHA 또는 보안 암호 질문과 같은 사용자 지정 챌린지를 사용할 수 있습니다.
사용자 지정 인증 흐름에서 SRP 암호 확인 사용
사용자 지정 인증 흐름에 SRP를 포함하려면 SRP를 시작해야 합니다.
-
앱은 사용자 지정 흐름에서 SRP 암호 확인을 시작하기 위해
CUSTOM_AUTH
를Authflow
로 지정하여InitiateAuth
를 호출합니다.AuthParameters
맵에서는 앱으로부터의 요청에SRP_A:
(SRP A 값) 및CHALLENGE_NAME: SRP_A
가 포함됩니다. -
이
CUSTOM_AUTH
흐름이challengeName: SRP_A
및challengeResult: true
의 초기 세션에서DefineAuthChallenge
Lambda 트리거를 호출합니다. Lambda 함수는challengeName: PASSWORD_VERIFIER
,issueTokens: false
및failAuthentication: false
로 응답해야 합니다. -
다음 앱은
challengeName: PASSWORD_VERIFIER
및challengeResponses
맵의 SRP에 필요한 다른 파라미터와 함께RespondToAuthChallenge
를 호출해야 합니다. -
Amazon Cognito에서 암호를 확인하면
RespondToAuthChallenge
에서challengeName: PASSWORD_VERIFIER
및challengeResult: true
의 두 번째 세션과 함께DefineAuthChallenge
Lambda 트리거를 호출합니다. 이때DefineAuthChallenge
Lambda 트리거는challengeName: CUSTOM_CHALLENGE
로 응답하여 사용자 지정 문제를 시작할 수 있습니다. -
사용자에 대해 MFA가 활성화된 경우 Amazon Cognito가 암호를 확인한 후 사용자에게 MFA를 사용하거나 설정하거나 로그인하라는 메시지가 표시됩니다.
참고
Amazon Cognito 호스팅 로그인 웹 페이지는 사용자 정의 인증 챌린지 Lambda 트리거를 활성화할 수 없습니다.
Lambda 트리거에 대한 자세한 내용은 Lambda 트리거를 사용하여 사용자 풀 워크플로 사용자 정의 섹션을 참조하세요.
사용자 마이그레이션 인증 흐름
사용자 마이그레이션 Lambda 트리거는 기존 사용자 관리 시스템에서 사용자 풀로의 마이그레이션을 도와줍니다. USER_PASSWORD_AUTH
인증 흐름을 선택하면 사용자 마이그레이션 과정에서 사용자가 암호를 재설정할 필요가 없습니다. 이 흐름은 인증 시 암호화된 SSL 연결을 통해 사용자의 암호를 서비스로 보냅니다.
모든 사용자를 마이그레이션하면 이 흐름을 보다 안전한 SRP 흐름으로 전환합니다. SRP 흐름은 네트워크를 통해 암호를 보내지 않습니다.
Lambda 트리거에 대해 자세히 알아보려면 Lambda 트리거를 사용하여 사용자 풀 워크플로 사용자 정의 섹션을 참조하세요.
Lambda 트리거를 사용한 사용자 마이그레이션에 대한 자세한 내용은 사용자 마이그레이션 Lambda 트리거를 사용하여 사용자 가져오기 섹션을 참조하세요.