내용으로 건너뛰기

Cognito 사용자 풀에서 암호 없는 인증을 구현하려면 어떻게 해야 합니까?

4분 분량
0

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 인증 활성화

다음 단계를 완료하십시오.

  1. Amazon Cognito 콘솔을 엽니다.
  2. 사용자 풀을 선택합니다.
  3. 인증에서 로그인 탭을 선택합니다.
  4. 선택 기반 로그인 옵션에서 편집을 선택합니다.
  5. 일회용 암호 이메일 메시지 또는 일회용 암호 SMS 메시지를 선택합니다.
  6. 변경 사항 저장을 선택합니다.
  7. 앱 클라이언트를 선택한 다음, 해당 앱 클라이언트를 선택합니다. 또는 새로 만듭니다.
  8. 앱 클라이언트 정보에서 편집을 선택합니다.
  9. 선택 기반 로그인: ALLOW_USER_AUTH를 선택합니다.
  10. 변경 사항 저장을 선택합니다.

OTP 인증 구현

암호 없는 인증은 관리형 로그인에서만 작동합니다. 클래식 호스팅 UI는 기본 제공되는 암호 없는 인증 흐름을 지원하지 않습니다. 자세한 내용은 사용자 풀을 사용한 인증에 대해 알아야 할 사항을 참조하십시오.

OTP를 구현하려면 다음 단계를 완료하십시오.

  1. 관리형 로그인을 설정합니다.
  2. 사용자가 관리형 로그인 페이지에 사용자 이름을 입력하도록 안내하는 접두사 도메인을 구성합니다. 사용자 지정 도메인을 사용하려면 관리형 로그인에 자체 도메인 사용을 참조하십시오.

AWS CLI를 사용하려면 다음 단계를 완료하십시오.

  1. initiate-auth 명령을 실행하여 인증을 시작합니다.

    aws cognito-idp initiate-auth --auth-flow USER_AUTH --auth-parameters USERNAME=example_username --client-id example_clientid

    참고: 모든 예제 값을 해당 값으로 바꾸십시오. 위 명령에 PREFERRED_CHALLENGE를 포함하는 경우 4번 단계로 진행하십시오.

  2. 응답에는 다음과 같은 사용 가능한 챌린지가 포함됩니다.

    {
       "AvailableChallenges": [
          "EMAIL_OTP",
          "SMS_OTP",
          "PASSWORD"
        ],
       "Session": "[Session ID]"
    }

    참고: 동일한 인증 흐름 내에서 모든 후속 인증 명령에 위 응답의 세션 ID를 사용합니다.

  3. 사용자가 선호하는 인증 방법을 선택한 후 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는 사용자의 이메일 또는 전화번호로 코드를 전송합니다.

  4. 특정 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는 사용자의 이메일 또는 전화번호로 코드를 전송합니다.

  5. 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 패스키 인증 활성화

다음 단계를 완료하십시오.

  1. Amazon Cognito 콘솔을 엽니다.
  2. 사용자 풀을 선택합니다.
  3. 인증에서 로그인 탭을 선택합니다.
  4. 선택 기반 로그인 옵션에서 편집을 선택한 다음, 사용 가능한 선택 항목에 패스키를 추가합니다.
  5. 패스키 편집을 선택한 후 다음 설정을 구성합니다.
    사용자 확인 모드를 선호 또는 필수 항목으로 설정합니다.
    신뢰 당사자 ID를 사용자 풀 도메인, 사용자 지정 도메인 또는 타사 도메인으로 설정합니다.
    참고: 신뢰 당사자 ID는 등록 및 인증에 패스키를 사용할 수 있는 도메인을 제어합니다.
  6. 변경 사항 저장을 선택합니다.
  7. 앱 클라이언트를 선택한 다음, 해당 앱 클라이언트를 선택합니다. 또는 새로 만듭니다.
  8. 앱 클라이언트 정보에서 편집을 선택합니다.
  9. 선택 기반 로그인: ALLOW_USER_AUTH를 선택합니다.
  10. 변경 사항 저장을 선택합니다.

관리형 로그인에서 사용자의 WebAuthn 패스키 등록

다음 단계를 완료하십시오.

  1. 앱 클라이언트에서 관리형 로그인을 설정합니다.
    참고: Amazon Cognito는 새 사용자 등록을 위한 패스키 설정을 자동으로 요청합니다.

  2. 패스키를 등록하지 않은 현재 사용자의 경우 다음 인증 엔드포인트로 리디렉션하도록 애플리케이션을 구성하십시오.
    https://auth.example.com/oauth2/authorize/?client_id=1example23456789&response_type=code&scope=email+openid+phone&redirect_uri=https://www.example.com 

  3. 인증 코드를 토큰으로 교환합니다.

  4. 다음 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"
            }
        ]
    }
  5. 위 명령이 빈 목록을 반환하는 경우 사용자를 다음 관리형 로그인 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 파라미터에 지정한 애플리케이션 페이지로 사용자를 리디렉션합니다. 관리형 로그인 페이지에서 이후에 로그인할 때 사용자는 등록된 패스키로 로그인할 수 있습니다.

관련 정보

API 및 SDK 인증을 위한 권한 부여 모델

Amazon Cognito 사용자 풀 인증

인증 흐름

AWS 공식업데이트됨 일 년 전