Cognito 사용자 풀에서 암호 없는 인증을 구현하려면 어떻게 해야 합니까?
Amazon Cognito 사용자 풀에서 암호 없는 인증을 구현하고 싶습니다.
간략한 설명
Amazon Cognito는 두 가지 암호 없는 인증 방법을 지원합니다.
중요:
- 사용자 풀에 다중 인증(MFA)이 필요한 경우 암호 없는 인증을 사용할 수 없습니다.
- 사용자가 처음 인증한 후 최대 20개의 WebAuthn 패스키를 등록할 수 있습니다.
- 암호 없는 인증은 ALLOW_USER_AUTH의 선택 기반 인증 AuthFlow에서만 사용할 수 있습니다.
- 선택 기반 인증을 사용하려면 Essentials 또는 Plus 기능 플랜이 있어야 합니다.
해결 방법
참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생하면 AWS CLI의 오류 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.
OTP 인증
OTP 인증 활성화
다음 단계를 완료하십시오.
- Amazon Cognito 콘솔을 엽니다.
- 사용자 풀을 선택합니다.
- 인증에서 로그인 탭을 선택합니다.
- 선택 기반 로그인 옵션에서 편집을 선택합니다.
- 일회용 암호 이메일 메시지 또는 일회용 암호 SMS 메시지를 선택합니다.
- 변경 사항 저장을 선택합니다.
- 앱 클라이언트를 선택한 다음, 해당 앱 클라이언트를 선택합니다. 또는 새로 만듭니다.
- 앱 클라이언트 정보에서 편집을 선택합니다.
- 선택 기반 로그인: ALLOW_USER_AUTH를 선택합니다.
- 변경 사항 저장을 선택합니다.
OTP 인증 구현
암호 없는 인증은 관리형 로그인에서만 작동합니다. 클래식 호스팅 UI는 기본 제공되는 암호 없는 인증 흐름을 지원하지 않습니다. 자세한 내용은 사용자 풀을 사용한 인증에 대해 알아야 할 사항을 참조하십시오.
OTP를 구현하려면 다음 단계를 완료하십시오.
- 관리형 로그인을 설정합니다.
- 사용자가 관리형 로그인 페이지에 사용자 이름을 입력하도록 안내하는 접두사 도메인을 구성합니다. 사용자 지정 도메인을 사용하려면 관리형 로그인에 자체 도메인 사용을 참조하십시오.
AWS CLI를 사용하려면 다음 단계를 완료하십시오.
-
initiate-auth 명령을 실행하여 인증을 시작합니다.
aws cognito-idp initiate-auth --auth-flow USER_AUTH --auth-parameters USERNAME=example_username --client-id example_clientid참고: 모든 예제 값을 해당 값으로 바꾸십시오. 위 명령에 PREFERRED_CHALLENGE를 포함하는 경우 4번 단계로 진행하십시오.
-
응답에는 다음과 같은 사용 가능한 챌린지가 포함됩니다.
{ "AvailableChallenges": [ "EMAIL_OTP", "SMS_OTP", "PASSWORD" ], "Session": "[Session ID]" }참고: 동일한 인증 흐름 내에서 모든 후속 인증 명령에 위 응답의 세션 ID를 사용합니다.
-
사용자가 선호하는 인증 방법을 선택한 후 respond-to-auth-challenge 명령을 실행하여 선택 사항을 제출합니다.
aws cognito-idp respond-to-auth-challenge --challenge-name SELECT_CHALLENGE --challenge-responses USERNAME=example_username,ANSWER=EMAIL_OTP --client-id example_clientid --session "SESSION_ID_FROM_PREVIOUS_RESPONSE"참고: 사용자가 선택한 챌린지 방법을 사용할 수 있는 경우 Amazon Cognito는 사용자의 이메일 또는 전화번호로 코드를 전송합니다.
-
특정 PREFERRED_CHALLENGE를 사용하여 인증 방법을 시작하려면 initiate-auth 명령을 실행합니다.
aws cognito-idp initiate-auth --auth-flow USER_AUTH --auth-parameters USERNAME=example_username,PREFERRED_CHALLENGE=EMAIL_OTP --client-id example_clientid참고: SMS 인증을 선호하는 경우 EMAIL_OTP를 SMS_OTP로 바꾸십시오. 사용자가 PREFERRED_CHALLENGE 방법을 사용할 수 있는 경우 Amazon Cognito는 사용자의 이메일 또는 전화번호로 코드를 전송합니다.
-
respond-to-auth-challenge 명령을 실행하여 응답을 반환합니다.
aws cognito-idp admin-respond-to-auth-challenge --challenge-name EMAIL_OTP --challenge-responses USERNAME=example_username,EMAIL_OTP_CODE=OTP_EMAIL --client-id example_clientid --session "SESSION_ID_FROM_PREVIOUS_RESPONSE"참고: SMS 인증을 사용하는 경우 EMAIL_OTP를 SMS_OTP로, EMAIL_OTP_CODE를 SMS_OTP_CODE로 바꾸십시오.
OTP 확인 후 사용자는 Amazon Cognito가 생성한 JSON 웹 토큰(JWT)을 받게 됩니다.
WebAuthn 패스키 인증
WebAuthn 패스키 인증 활성화
다음 단계를 완료하십시오.
- Amazon Cognito 콘솔을 엽니다.
- 사용자 풀을 선택합니다.
- 인증에서 로그인 탭을 선택합니다.
- 선택 기반 로그인 옵션에서 편집을 선택한 다음, 사용 가능한 선택 항목에 패스키를 추가합니다.
- 패스키 편집을 선택한 후 다음 설정을 구성합니다.
사용자 확인 모드를 선호 또는 필수 항목으로 설정합니다.
신뢰 당사자 ID를 사용자 풀 도메인, 사용자 지정 도메인 또는 타사 도메인으로 설정합니다.
참고: 신뢰 당사자 ID는 등록 및 인증에 패스키를 사용할 수 있는 도메인을 제어합니다. - 변경 사항 저장을 선택합니다.
- 앱 클라이언트를 선택한 다음, 해당 앱 클라이언트를 선택합니다. 또는 새로 만듭니다.
- 앱 클라이언트 정보에서 편집을 선택합니다.
- 선택 기반 로그인: ALLOW_USER_AUTH를 선택합니다.
- 변경 사항 저장을 선택합니다.
관리형 로그인에서 사용자의 WebAuthn 패스키 등록
다음 단계를 완료하십시오.
-
앱 클라이언트에서 관리형 로그인을 설정합니다.
참고: Amazon Cognito는 새 사용자 등록을 위한 패스키 설정을 자동으로 요청합니다. -
패스키를 등록하지 않은 현재 사용자의 경우 다음 인증 엔드포인트로 리디렉션하도록 애플리케이션을 구성하십시오.
https://auth.example.com/oauth2/authorize/?client_id=1example23456789&response_type=code&scope=email+openid+phone&redirect_uri=https://www.example.com -
다음 list-web-authn-credentials 명령을 실행하여 등록된 패스키를 확인합니다.
aws cognito-idp list-web-authn-credentials --access-token token-from-above-step출력 예시:
{ "Credentials": [ { "CredentialId": "r8DCexamplecredentialsaWMQ", "FriendlyCredentialName": "Chrome on Mac", "RelyingPartyId": "<cognito-prefix>.auth.us-east-1.amazoncognito.com", "AuthenticatorAttachment": "platform", "AuthenticatorTransports": [ "internal" ], "CreatedAt": "2025-06-27T07:41:15.800000+00:00" } ] } -
위 명령이 빈 목록을 반환하는 경우 사용자를 다음 관리형 로그인 URL로 리디렉션하여 패스키 등록 프로세스를 시작합니다.
https://cognito-managed-login-domain/passkeys/add?client_id=example_client_id&redirect_uri=https://www.example.com
참고: Cognito 관리형 로그인의 브라우저 세션이 활성화되어 있는지 확인하십시오. 또한 response_type 및 범위와 같은 필수 OAuth 파라미터를 추가합니다.
passkeys/add URL 페이지에서 사용자가 패스키를 추가합니다. 그러면 Amazon Cognito는 redirect_uri 파라미터에 지정한 애플리케이션 페이지로 사용자를 리디렉션합니다. 관리형 로그인 페이지에서 이후에 로그인할 때 사용자는 등록된 패스키로 로그인할 수 있습니다.
관련 정보
- 언어
- 한국어

관련 콘텐츠
질문됨 2년 전