

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Amazon Cognito 사용자 풀로 인증
<a name="authentication"></a>

Amazon Cognito에서는 다양한 방법으로 사용자를 인증할 수 있습니다. 사용자는 암호와 WebAuthn 패스키로 로그인할 수 있습니다. Amazon Cognito는 이메일 또는 SMS 메시지로 일회용 암호를 보낼 수 있습니다. 자체 문제 및 응답 시퀀스를 오케스트레이션하는 Lambda 함수를 구현할 수 있습니다. 다음은 *인증 흐름*입니다. 인증 흐름에서 사용자는 보안 암호를 제공하고 Amazon Cognito는 보안 암호를 확인한 다음 애플리케이션이 OIDC 라이브러리로 처리할 수 있도록 JSON 웹 토큰(JWT)을 발급합니다. 이 장에서는 다양한 애플리케이션 환경에서 다양한 인증 흐름에 맞게 사용자 풀 및 앱 클라이언트를 구성하는 방법에 대해 설명합니다. 관리형 로그인의 호스팅 로그인 페이지를 사용하고 AWS SDK에서 자체 로직 및 프런트 엔드를 빌드하는 옵션에 대해 알아봅니다.

도메인 유무에 관계없이 모든 사용자 풀은 사용자 풀 API에서 사용자를 인증할 수 있습니다. 사용자 풀에 도메인을 추가하면 [사용자 풀 엔드포인트](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-userpools-server-contract-reference.html)를 사용할 수 있습니다. 사용자 풀 API는 다양한 권한 부여 모델 및 API 요청의 요청 흐름을 지원합니다.

Amazon Cognito는 사용자의 ID를 확인하기 위해 이메일, SMS 메시지, 일회용 암호 및 패스키와 같은 암호 외에도 여러 유형의 문제를 통합하는 인증 흐름을 지원합니다.

**Topics**
+ [인증 흐름 구현](#authentication-implement)
+ [사용자 풀을 사용한 인증에 대해 알아야 할 사항](#authentication-flow-things-to-know)
+ [인증 세션의 예](#amazon-cognito-user-pools-authentication-flow)
+ [관리형 로그인을 위한 인증 방법 구성](authentication-flows-selection-managedlogin.md)
+ [AWS SDKs에서 인증 방법 관리](authentication-flows-selection-sdk.md)
+ [인증 흐름](amazon-cognito-user-pools-authentication-flow-methods.md)
+ [API 및 SDK 인증을 위한 권한 부여 모델](authentication-flows-public-server-side.md)

## 인증 흐름 구현
<a name="authentication-implement"></a>

인증용 AWS SDK를 사용하여 [관리형 로그인](authentication-flows-selection-managedlogin.md)을 구현하든 사용자 [지정 애플리케이션 프런트 엔드](authentication-flows-selection-sdk.md)를 구현하든 관계없이 구현하려는 인증 유형에 맞게 앱 클라이언트를 구성해야 합니다. 다음 정보는 [앱 클라이언트](user-pool-settings-client-apps.md) 및 애플리케이션의 인증 흐름 설정을 설명합니다.

------
#### [ App client supported flows ]

Amazon Cognito 콘솔 또는 AWS SDK의 API를 사용하여 앱 클라이언트에 지원되는 흐름을 구성할 수 있습니다. 이러한 흐름을 지원하도록 앱 클라이언트를 구성한 후 애플리케이션에 배포할 수 있습니다.

다음 절차에서는 Amazon Cognito 콘솔을 사용하여 앱 클라이언트에 사용할 수 있는 인증 흐름을 구성합니다.

**인증 흐름에 맞게 앱 클라이언트를 구성하는 방법(콘솔)**

1. 에 로그인 AWS 하고 [Amazon Cognito 사용자 풀 콘솔](https://console.aws.amazon.com/cognito/v2/idp)로 이동합니다. 사용자 풀을 선택하거나 새로운 사용자 풀을 생성합니다.

1. 사용자 풀 구성에서 **앱 클라이언트** 메뉴를 선택합니다. 앱 클라이언트를 선택하거나 새 앱 클라이언트를 생성합니다.

1. **앱 클라이언트 정보**에서 **편집**을 선택합니다.

1. **앱 클라이언트 흐름**에서 지원하려는 인증 흐름을 선택합니다.

**인증 흐름에 대한 앱 클라이언트를 구성하는 방법(API/SDK)**  
Amazon Cognito API를 사용하여 앱 클라이언트에 사용할 수 있는 인증 흐름을 구성하려면 [CreateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html#CognitoUserPools-CreateUserPoolClient-request-ExplicitAuthFlows) 또는 [UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html#CognitoUserPools-UpdateUserPoolClient-request-ExplicitAuthFlows) 요청에서 `ExplicitAuthFlows` 값을 설정합니다. 다음은 클라이언트에 보안 원격 암호(SRP) 및 선택 기반 인증을 프로비저닝하는 예입니다.

```
"ExplicitAuthFlows": [ 
   "ALLOW_USER_AUTH",
   "ALLOW_USER_SRP_AUTH
]
```

앱 클라이언트 지원 흐름을 구성할 때 다음 옵션과 API 값을 지정할 수 있습니다.


**앱 클라이언트 흐름 지원**  

| 인증 흐름 | 호환성 | 콘솔 | API  | 
| --- | --- | --- | --- | 
| [선택 기반 인증](authentication-flows-selection-sdk.md#authentication-flows-selection-choice) | 서버 측, 클라이언트 측 | 로그인 시 인증 유형 선택 | ALLOW\$1USER\$1AUTH | 
| [영구 암호로 로그인](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-password) | 클라이언트 측 | 사용자 이름과 암호로 로그인 | ALLOW\$1USER\$1PASSWORD\$1AUTH | 
| [영구 암호 및 보안 페이로드로 로그인](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-srp) | 서버 측, 클라이언트 측 | 보안 원격 암호(SRP)로 로그인 | ALLOW\$1USER\$1SRP\$1AUTH | 
| [토큰 새로 고침](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-refresh) | 서버 측, 클라이언트 측 | 기존의 인증된 세션에서 새 사용자 토큰 가져오기 | ALLOW\$1REFRESH\$1TOKEN\$1AUTH | 
| [서버 측 인증](authentication-flows-public-server-side.md#amazon-cognito-user-pools-server-side-authentication-flow) | 서버 측 | 서버 측 관리 자격 증명으로 로그인 | ALLOW\$1ADMIN\$1USER\$1PASSWORD\$1AUTH | 
| [사용자 지정 인증](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-custom) | 서버 측과 클라이언트 측 맞춤형 애플리케이션. 관리형 로그인과 호환되지 않습니다. | Lambda 트리거의 사용자 지정 인증 흐름으로 로그인 | ALLOW\$1CUSTOM\$1AUTH | 

------
#### [ Implement flows in your application ]

관리형 로그인을 사용하면 구성된 인증 옵션을 로그인 페이지에서 자동으로 사용할 수 있습니다. 사용자 지정 빌드 애플리케이션에서 초기 흐름 선언으로 인증을 시작합니다.
+ 사용자의 흐름 옵션 목록에서 선택하려면 `USER_AUTH` 흐름으로 [선택 기반 인증](authentication-flows-selection-sdk.md#authentication-flows-selection-choice)을 선언합니다. 이 흐름에는 [패스키](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passkey) 및 [암호 없는](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passwordless) 인증과 같이 클라이언트 기반 인증 흐름에서 사용할 수 없는 사용 가능한 인증 방법이 있습니다.
+ 인증 흐름을 미리 선택하려면 앱 클라이언트에서 사용할 수 있는 다른 흐름으로 [클라이언트 기반 인증](authentication-flows-selection-sdk.md#authentication-flows-selection-client)을 선언합니다.

사용자를 로그인할 때 [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html#CognitoUserPools-InitiateAuth-request-AuthFlow) 또는 [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html#CognitoUserPools-AdminInitiateAuth-request-AuthFlow) 요청 본문에 `AuthFlow` 파라미터가 포함되어야 합니다.

선택 기반 인증:

```
"AuthFlow": "USER_AUTH"
```

SRP를 사용한 클라이언트 기반 인증:

```
"AuthFlow": "USER_SRP_AUTH"
```

------

## 사용자 풀을 사용한 인증에 대해 알아야 할 사항
<a name="authentication-flow-things-to-know"></a>

Amazon Cognito 사용자 풀을 사용한 인증 모델 설계에서 다음 정보를 고려하세요.

**관리형 로그인 및 호스팅 UI의 인증 흐름**  
[관리형 로그인](cognito-user-pools-managed-login.md)에는 클래식 호스팅 UI보다 더 많은 인증 옵션이 있습니다. 예를 들어 사용자는 관리형 로그인에서만 암호 없는 패스키 인증을 수행할 수 있습니다.

** AWS SDK 인증에서만 사용 가능한 사용자 지정 인증 흐름**  
관리형 로그인 또는 클래식 호스팅 UI로는 *사용자 지정 인증 흐름* 또는 [Lambda 트리거를 사용한 사용자 지정 인증](user-pool-lambda-challenge.md)을 수행할 수 없습니다. [AWS SDK를 사용한 인증](authentication-flows-selection-sdk.md)에서 사용자 지정 인증을 사용할 수 있습니다.

**외부 ID 제공업체(IdP) 로그인을 위한 관리형 로그인**  
[AWS SDKs를 사용한 인증](authentication-flows-selection-sdk.md)에서는 [타사 IdPs](cognito-user-pools-identity-federation.md) 통해 사용자를 로그인할 수 없습니다. 관리형 로그인 또는 클래식 호스팅 UI를 구현하고 IdP로 리디렉션한 다음 애플리케이션에서 OIDC 라이브러리를 사용하여 결과 인증 객체를 처리해야 합니다. 관리형 로그인에 대한 자세한 정보는 [사용자 풀 관리형 로그인](cognito-user-pools-managed-login.md) 섹션을 참조하세요.

**다른 사용자 기능에 대한 암호 없는 인증 효과**  
사용자 풀 및 앱 클라이언트에서 [일회용 암호](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passwordless) 또는 [패스키](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passkey)를 사용하여 암호 없는 로그인을 활성화하면 사용자 생성 및 마이그레이션에 영향을 미칩니다. 암호 없는 로그인이 활성화된 경우:  

1. 관리자는 암호 없이 사용자를 생성할 수 있습니다. 기본 초대 메시지 템플릿이 `{###}` 암호 자리 표시자를 더 이상 포함하지 않도록 변경됩니다. 자세한 내용은 [관리자로 사용자 계정 생성](how-to-create-user-accounts.md) 단원을 참조하십시오.

1. SDK 기반 [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html) 작업의 경우 사용자가 가입할 때 암호를 제공할 필요가 없습니다. 관리형 로그인 및 호스팅 UI는 암호 없는 인증이 허용되는 경우에도 가입 페이지에 암호가 필요합니다. 자세한 내용은 [사용자 계정 가입 및 확인](signing-up-users-in-your-app.md) 단원을 참조하십시오.

1. CSV 파일에서 가져온 사용자는 속성에 사용 가능한 암호 없는 로그인 옵션에 대한 이메일 주소 또는 전화번호가 포함된 경우 암호 재설정 없이 암호 없는 옵션으로 즉시 로그인할 수 있습니다. 자세한 내용은 [CSV 파일에서 사용자 풀로 사용자 가져오기](cognito-user-pools-using-import-tool.md) 단원을 참조하십시오.

1. 암호 없는 인증은 [사용자 마이그레이션 Lambda 트리거](user-pool-lambda-migrate-user.md)를 호출하지 않습니다.

1. 일회용 암호(OTP) 첫 번째 팩터로 로그인하는 사용자는 세션에 [멀티 팩터 인증(MFA)](user-pool-settings-mfa.md) 팩터를 추가할 수 없습니다. 사용자 확인이 포함된 패스키는 로 구성된 경우 MFA 요구 사항을 충족할 수 있습니다`MULTI_FACTOR_WITH_USER_VERIFICATION`.

**패스키 신뢰 당사자 URL은 공개 접미사 목록에 있을 수 없습니다.**  
`www.example.com`과 같이 소유한 도메인 이름을 패스키 구성에서 신뢰 당사자(RP) ID로 사용할 수 있습니다. 이 구성은 소유한 도메인에서 실행되는 사용자 지정 빌드 애플리케이션을 지원하기 위한 것입니다. [퍼블릭 접미사 목록](https://publicsuffix.org/) 또는 PSL에는 보호된 상위 수준 도메인이 포함되어 있습니다. Amazon Cognito는 RP URL을 PSL의 도메인으로 설정하려고 할 때 오류를 반환합니다.

**Topics**
+ [인증 세션 흐름 기간](#authentication-flow-session-duration)
+ [로그인 시도 실패에 대한 잠금 동작](#authentication-flow-lockout-behavior)

### 인증 세션 흐름 기간
<a name="authentication-flow-session-duration"></a>

사용자 풀의 기능에 따라 앱이 Amazon Cognito에서 토큰을 검색하기 전에 `InitiateAuth` 및 `RespondToAuthChallenge`에 대한 몇 가지 문제에 응답할 수 있습니다. Amazon Cognito는 각 요청에 대한 응답에 세션 문자열을 포함합니다. API 요청을 인증 흐름에 결합하려면 이전 요청에 대한 응답의 세션 문자열을 각 후속 요청에 포함합니다. 기본적으로 사용자는 세션 문자열이 만료되기 전에 3분 동안 각 챌린지를 완료해야 합니다. 이 기간을 조정하려면 앱 클라이언트 **Authentication flow session duration**(인증 흐름 세션 기간)을 변경합니다. 다음 절차에서는 앱 클라이언트 구성에서 이 설정을 변경하는 방법을 설명합니다.

**참고**  
**인증 흐름 세션 기간** 설정은 Amazon Cognito 사용자 풀 API를 사용한 인증에 적용됩니다. 관리형 로그인은 세션 기간을 멀티 팩터 인증의 경우 3분, 암호 재설정 코드의 경우 8분으로 설정합니다.

------
#### [ Amazon Cognito console ]

**앱 클라이언트 인증 흐름 세션 기간을 구성하는 방법(AWS Management Console)**

1. 사용자 풀의 **App integration**(앱 통합) 탭에서 **App clients and analytics**(앱 클라이언트 및 분석) 컨테이너의 앱 클라이언트 이름을 선택합니다.

1. **앱 클라이언트 정보** 컨테이너에서 **편집**을 선택합니다.

1. **인증 흐름 세션 기간** 값을 SMS 및 이메일 MFA 코드에 대해 원하는 유효 기간(분)으로 변경합니다. 이렇게 하면 사용자가 앱 클라이언트에서 인증 챌린지를 완료해야 하는 시간도 변경됩니다.

1. **변경 사항 저장**을 선택합니다.

------
#### [ User pools API ]

**앱 클라이언트 인증 흐름 세션 기간을 구성하는 방법(Amazon Cognito API)**

1. `DescribeUserPoolClient` 요청의 기존 사용자 풀 설정으로 `UpdateUserPoolClient` 요청을 준비합니다. `UpdateUserPoolClient` 요청에는 모든 기존 앱 클라이언트 속성이 포함되어야 합니다.

1. `AuthSessionValidity` 값을 SMS MFA 코드에 대해 원하는 유효 기간(분)으로 변경합니다. 이렇게 하면 사용자가 앱 클라이언트에서 인증 챌린지를 완료해야 하는 시간도 변경됩니다.

------

앱 클라이언트에 대한 자세한 내용은 [앱 클라이언트를 사용한 애플리케이션별 설정](user-pool-settings-client-apps.md) 섹션을 참조하세요.

### 로그인 시도 실패에 대한 잠금 동작
<a name="authentication-flow-lockout-behavior"></a>

인증되지 않은 API 작업 또는 IAM 인증 API 작업으로 요청되었는지 여부에 관계없이 사용자 암호로 로그인 시도가 5회 실패하면 Amazon Cognito는 1초 동안 사용자를 잠급니다. 이후 한 번 더 실패할 때마다 잠금 시간이 두 배로 늘어나 최대 15분 정도까지 늘어납니다.

잠금 기간 중에 시도하면 `Password attempts exceeded` 예외가 발생하며, 이후 잠금 기간에 영향을 주지는 않습니다. 누적 로그인 시도 실패 *n*(`Password attempts exceeded`예외 제외)회에 대해, Amazon Cognito는 *2^ (n-5)*초 동안 사용자를 차단합니다. 잠금을 *n=0* 초기 상태로 재설정하려면 사용자는 잠금 기간이 만료된 후 성공적으로 로그인하거나 잠금이 설정된 후 연속으로 15분 동안 로그인 시도를 하지 않아야 합니다. 이러한 동작은 변경될 수 있습니다. 암호 기반 인증도 수행하지 않으면 이 동작은 사용자 지정 챌린지에는 적용되지 않습니다.

## 인증 세션의 예
<a name="amazon-cognito-user-pools-authentication-flow"></a>

다음 다이어그램과 단계별 가이드는 사용자가 애플리케이션에 로그인하는 일반적인 시나리오를 보여줍니다. 예시 애플리케이션은 사용자에게 몇 가지 로그인 옵션을 제공합니다. 자격 증명을 입력하여 하나를 선택하고, 추가 인증 요소를 제공하고, 로그인합니다.

![\[사용자에게 입력을 요청하고 AWS SDK로 로그인하는 애플리케이션을 보여주는 흐름도입니다.\]](http://docs.aws.amazon.com/ko_kr/cognito/latest/developerguide/images/authentication-api-userauth.png)


사용자가 사용자 이름과 암호로 로그인하거나, 이메일 메시지에서 일회용 코드를 요청하거나, 지문 옵션을 선택할 수 있는 로그인 페이지가 있는 애플리케이션을 가정해 보겠습니다.

1. **로그인 프롬프트**: 애플리케이션에 *로그인* 버튼이 있는 홈 화면이 표시됩니다.

1. **로그인 요청**: 사용자가 *로그인*을 선택합니다. 쿠키 또는 캐시에서 애플리케이션은 사용자 이름을 검색하거나 입력하라는 메시지를 표시합니다.

1. **요청 옵션**: 애플리케이션에서 `USER_AUTH` 흐름이 포함된 `InitiateAuth` API 요청으로 사용자의 로그인 옵션을 요청하여 사용자에게 사용 가능한 로그인 방법을 요청합니다.

1. **로그인 옵션 전송**: Amazon Cognito는 `PASSWORD`, `EMAIL_OTP` 및 `WEB_AUTHN`으로 응답합니다. 응답에는 다음 응답에서 재생할 수 있는 세션 식별자가 포함되어 있습니다.

1. **표시 옵션**: 애플리케이션에 사용자가 사용자 이름과 암호를 입력하거나, 일회용 코드를 가져오거나, 지문을 스캔할 수 있는 UI 요소가 표시됩니다.

1. **옵션/자격 증명 입력 선택**: 사용자가 사용자 이름과 암호를 입력합니다.

1. **인증 시작**: 애플리케이션에서 사용자 이름-암호 로그인을 확인하고 사용자 이름과 암호를 제공하는 `RespondToAuthChallenge` API 요청과 함께 사용자의 로그인 정보를 제공합니다.

1. **자격 증명 검증**: Amazon Cognito가 사용자의 자격 증명을 확인합니다.

1. **추가 문제**: 사용자에게 인증 앱으로 구성된 다중 인증이 있습니다. Amazon Cognito는 `SOFTWARE_TOKEN_MFA` 문제를 반환합니다.

1. **문제 프롬프트**: 애플리케이션에 사용자의 인증 앱에서 시간 기반 일회용 암호(TOTP)를 요청하는 양식이 표시됩니다.

1. **문제 답변**: 사용자가 TOTP를 제출합니다.

1. **문제에 응답**: 다른 `RespondToAuthChallenge` 요청에서 애플리케이션은 사용자의 TOTP를 제공합니다.

1. **문제 응답 검증**: Amazon Cognito는 사용자의 코드를 확인하고 현재 사용자에게 추가 문제를 발행하지 않도록 사용자 풀이 구성되어 있는지 확인합니다.

1. **문제 토큰**: Amazon Cognito는 ID, 액세스 및 새로 고침 JSON 웹 토큰(JWT)을 반환합니다. 사용자의 초기 인증이 완료되었습니다.

1. **토큰 저장**: 애플리케이션은 사용자 데이터를 참조하고, 리소스에 대한 액세스를 승인하고, 토큰이 만료되면 토큰을 업데이트할 수 있도록 사용자의 토큰을 캐싱합니다.

1. **승인된 콘텐츠 렌더링**: 애플리케이션은 ID 및 역할을 기반으로 리소스에 대한 사용자의 액세스를 결정하고 애플리케이션 콘텐츠를 제공합니다.

1. **액세스 콘텐츠**: 사용자가 로그인하고 애플리케이션 사용을 시작합니다.

1. **토큰이 만료된 콘텐츠 요청**: 나중에 사용자가 권한이 필요한 리소스를 요청합니다. 사용자의 캐시된 토큰이 만료되었습니다.

1. **새로 고침 토큰**: 애플리케이션에서 사용자의 저장된 새로 고침 토큰을 사용하여 `InitiateAuth` 요청을 만듭니다.

1. **문제 토큰**: Amazon Cognito는 새로운 ID와 액세스 JWT를 반환합니다. 자격 증명에 대한 추가 프롬프트 없이 사용자의 세션이 안전하게 새로 고쳐집니다.

[AWS Lambda 트리거](cognito-user-pools-working-with-lambda-triggers.md)를 사용하여 사용자가 인증하는 방식을 사용자 지정할 수 있습니다. 이러한 트리거는 인증 흐름의 일부로서 고유 챌린지를 발행 및 확인할 수 있습니다.

보안 백엔드 서버에 대해 관리자 인증 흐름을 사용할 수 있으며, [사용자 마이그레이션 인증 흐름](cognito-user-pools-using-import-tool.md)을 사용하면 사용자에게 암호 재설정을 요구하지 않고도 사용자 마이그레이션을 수행할 수 있습니다.

# 관리형 로그인을 위한 인증 방법 구성
<a name="authentication-flows-selection-managedlogin"></a>

사용자가 로그인, 로그아웃 또는 암호를 재설정하도록 하려는 경우 사용자 풀 인증을 위한 웹 프런트 엔드인 [관리형 로그인 페이지](cognito-user-pools-managed-login.md)를 호출할 수 있습니다. 이 모델에서 애플리케이션은 OIDC 라이브러리를 가져와 사용자 풀 관리형 로그인 페이지로 브라우저 기반 인증 시도를 처리합니다. 사용자가 사용할 수 있는 인증 형식은 사용자 풀 및 앱 클라이언트의 구성에 따라 다릅니다. 앱 클라이언트에서 `ALLOW_USER_AUTH` 흐름을 구현하면 Amazon Cognito는 사용자에게 사용 가능한 옵션에서 로그인 방법을 선택하라는 메시지를 표시합니다. `ALLOW_USER_PASSWORD_AUTH`를 구현하고 SAML 제공업체를 할당하면 로그인 페이지에 사용자 이름과 암호를 입력하거나 IdP에 연결할 수 있는 옵션이 표시됩니다.

Amazon Cognito 사용자 풀 콘솔을 사용하면 애플리케이션에 대한 관리형 로그인 인증을 설정할 수 있습니다. 새 사용자 풀을 생성할 때 개발 중인 플랫폼을 지정하면 콘솔에서 로그인 및 로그아웃 흐름을 구현하기 위한 스타터 코드를 사용하여 OIDC 및 OAuth 라이브러리를 구현하는 예제를 제공합니다. 많은 OIDC 신뢰 당사자 구현을 통해 관리형 로그인을 구축할 수 있습니다. 가능하면 [인증된 OIDC 신뢰 당사자 라이브러리](https://openid.net/developers/certified-openid-connect-implementations/)로 작업하는 것이 좋습니다. 자세한 내용은 [사용자 풀 시작하기](getting-started-user-pools.md) 단원을 참조하십시오.

일반적으로 OIDC 신뢰 당사자 라이브러리는 사용자 풀의 `.well-known/openid-configuration` 엔드포인트를 주기적으로 확인하여 토큰 엔드포인트 및 권한 부여 엔드포인트와 같은 발급자 URLs을 결정합니다. 옵션을 선택해야 하는 경우 이 자동 검색 동작을 구현하는 것이 가장 좋습니다. 발급자 엔드포인트를 수동으로 구성하면 오류가 발생할 수 있습니다. 예를 들어 사용자 풀 도메인을 변경할 수 있습니다. `openid-configuration`의 경로는 사용자 풀 도메인에 연결되지 않으므로 서비스 엔드포인트를 자동 검색하는 애플리케이션이 도메인 변경을 자동으로 선택합니다.

## 관리형 로그인에 대한 사용자 풀 설정
<a name="authentication-flows-selection-managedlogin-settings"></a>

애플리케이션의 여러 공급자로 로그인을 허용하거나 Amazon Cognito를 독립 사용자 디렉터리로 사용할 수 있습니다. 사용자 속성을 수집하거나, MFA를 설정 및 프롬프트하거나, 이메일 주소를 사용자 이름으로 요구할 수도 있습니다. 관리형 로그인 및 호스팅 UI의 필드는 직접 편집할 수 없습니다. 대신 사용자 풀의 구성은 관리형 로그인 인증 흐름의 처리를 자동으로 설정합니다.

다음 사용자 풀 구성 항목은 Amazon Cognito가 관리형 로그인 및 호스팅 UI에서 사용자에게 제공하는 인증 방법을 결정합니다.

------
#### [ User pool options (Sign-in menu) ]

다음 옵션은 Amazon Cognito 콘솔에서 사용자 풀의 **로그인** 메뉴에 있습니다.

**Cognito 사용자 풀 로그인 옵션**  
사용자 이름에 대한 옵션이 있습니다. 관리형 로그인 및 호스팅 UI 페이지는 선택한 형식의 사용자 이름만 허용합니다. 예를 들어 **이메일**을 유일한 로그인 옵션으로 사용하여 사용자 풀을 설정하면 관리형 로그인 페이지는 이메일 형식의 사용자 이름만 허용합니다.

**필수 속성**  
사용자 풀에서 필요에 따라 속성을 설정하면 관리형 로그인은 사용자가 가입할 때 해당 속성에 대한 값을 입력하라는 메시지를 표시합니다.

**선택 기반 로그인 옵션**  
[선택 기반 인증](authentication-flows-selection-sdk.md#authentication-flows-selection-choice)의 인증 방법에 대한 설정이 있습니다. 여기서 [패스키](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passkey) 및 [암호 없는](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passwordless)과 같은 인증 방법을 켜거나 끌 수 있습니다. 이러한 방법은 **Lite** 계층을 초과하는 [관리형 로그인 도메인](managed-login-branding.md) 및 [기능 플랜](cognito-sign-in-feature-plans.md)이 있는 사용자 풀에서만 사용할 수 있습니다.

**다중 인증**  
관리형 로그인 및 호스팅 UI는 [MFA](user-pool-settings-mfa.md)에 대한 등록 및 인증 작업을 처리합니다. 사용자 풀에 MFA가 필요한 경우 로그인 페이지에 추가 요소를 설정하라는 메시지가 자동으로 표시됩니다. 또한 MFA 구성을 가진 사용자에게 MFA 코드로 인증을 완료하라는 메시지를 표시합니다. 사용자 풀에서 MFA가 꺼져 있거나 선택 사항인 경우 로그인 페이지에 MFA를 설정하라는 메시지가 표시되지 않습니다.

**사용자 계정 복구**  
사용자 풀의 셀프 서비스 [계정 복구]() 설정은 로그인 페이지에 사용자가 암호를 재설정할 수 있는 링크가 표시되는지 여부를 결정합니다.

------
#### [ User pool options (Domain menu) ]

다음 옵션은 Amazon Cognito 콘솔에서 사용자 풀의 **도메인** 메뉴에 있습니다.

**도메인**  
사용자 풀 도메인을 선택하면 인증을 위해 브라우저를 호출할 때 사용자가 여는 링크의 경로가 설정됩니다.

**브랜딩 버전**  
브랜딩 버전을 선택하면 사용자 풀 도메인에 관리형 로그인 또는 호스팅 UI가 표시되는지 여부가 결정됩니다.

------
#### [ User pool options (Social and external providers menu) ]

다음 옵션은 Amazon Cognito 콘솔에서 사용자 풀의 **소셜 및 외부 공급자** 메뉴에 있습니다.

**공급자**  
사용자 풀에 추가하는 ID 제공업체(idP)는 사용자 풀의 각 앱 클라이언트에 대해 활성 또는 비활성 상태로 둘 수 있습니다.

------
#### [ App client options ]

다음 옵션은 Amazon Cognito 콘솔에서 사용자 풀의 **앱 클라이언트** 메뉴에 있습니다. 이러한 옵션을 검토하려면 목록에서 앱 클라이언트를 선택합니다.

**빠른 설정 가이드**  
빠른 설정 가이드에는 다양한 개발자 환경에 대한 코드 예제가 있습니다. 여기에는 관리형 로그인 인증을 애플리케이션과 통합하는 데 필요한 라이브러리가 포함되어 있습니다.

**앱 클라이언트 정보**  
이 구성을 편집하여 현재 앱 클라이언트로 표시되는 애플리케이션에 할당된 IdP를 설정합니다. 관리형 로그인 페이지에서 Amazon Cognito는 사용자에 대한 선택 사항을 표시합니다. 이러한 선택은 할당된 메서드 및 IdP에서 결정됩니다. 예를 들어 `MySAML`이라는 SAML 2.0 IdP와 로컬 사용자 풀 로그인을 할당하면 관리형 로그인 페이지에 인증 방법 프롬프트와 `MySAML`에 대한 버튼이 표시됩니다.

**인증 설정**  
이 구성을 편집하여 애플리케이션에 대한 인증 방법을 설정합니다. 관리형 로그인 페이지에서 Amazon Cognito는 사용자에 대한 선택 사항을 표시합니다. 이러한 선택은 사용자 풀을 IdP로 사용할 수 있는지 여부와 할당하는 방법에 따라 결정됩니다. 예를 들어 선택 기반 `ALLOW_USER_AUTH` 인증을 할당하면 관리형 로그인 페이지에 이메일 주소 입력 및 패스키로 로그인과 같은 사용 가능한 선택 항목이 표시됩니다. 관리되는 로그인 페이지는 할당된 IdP에 대한 버튼도 렌더링합니다.

**로그인 페이지**  
이 탭에서 사용할 수 있는 옵션을 사용하여 관리형 로그인 또는 호스팅 UI 사용자 대화형 페이지의 시각적 효과를 설정합니다. 자세한 내용은 [관리형 로그인 페이지에 브랜딩 적용](managed-login-branding.md) 단원을 참조하십시오.

------

# AWS SDKs에서 인증 방법 관리
<a name="authentication-flows-selection-sdk"></a>

Amazon Cognito 사용자 풀의 사용자는 다양한 초기 로그인 옵션 또는 *요인*으로 로그인할 수 있습니다. 일부 요소의 경우 사용자는 다중 인증(MFA)으로 후속 조치를 취할 수 있습니다. 이러한 첫 번째 요인에는 사용자 이름과 암호, 일회용 암호, 패스키 및 사용자 지정 인증이 포함됩니다. 자세한 내용은 [인증 흐름](amazon-cognito-user-pools-authentication-flow-methods.md) 단원을 참조하십시오. 애플리케이션에 기본 제공 UI 구성 요소가 있고 AWS SDK 모듈을 가져오는 경우 인증을 위한 애플리케이션 로직을 구축해야 합니다. 두 가지 기본 방법 중 하나를 선택해야 하며, 해당 방법에서 구현하려는 인증 메커니즘을 선택해야 합니다.

애플리케이션 또는 클라이언트가 인증 유형을 미리 선언하는 *클라이언트 기반 인증*을 구현할 수 있습니다. 다른 옵션은 앱이 사용자 이름을 수집하고 사용자에게 사용 가능한 인증 유형을 요청하는 *선택 기반 인증*입니다. 요구 사항에 따라 동일한 애플리케이션에서 이러한 모델을 함께 구현하거나 앱 클라이언트 간에 분할할 수 있습니다. 각 메서드에는 클라이언트 기반 사용자 지정 인증 및 선택 기반 암호 없는 인증과 같이 고유한 기능이 있습니다.

사용자 풀 API의 AWS SDK 구현으로 인증을 수행하는 사용자 지정 빌드 애플리케이션에서는 사용자 풀 구성, 앱 클라이언트 구성 및 클라이언트 측 기본 설정에 맞게 API 요청을 구성해야 합니다. `USER_AUTH`의 `AuthFlow`로 시작하는 `InitiateAuth` 세션은 선택 기반 인증을 시작합니다. Amazon Cognito는 선호하는 인증 방법 또는 선택 목록의 문제로 API에 응답합니다. `CUSTOM_AUTH`의 `AuthFlow`로 시작하는 세션은 Lambda 트리거를 사용한 사용자 지정 인증으로 바로 전환됩니다.

일부 인증 방법은 두 흐름 유형 중 하나로 고정되며, 일부 방법은 둘 다에서 사용할 수 있습니다.

**Topics**
+ [선택 기반 인증](#authentication-flows-selection-choice)
+ [클라이언트 기반 인증](#authentication-flows-selection-client)

## 선택 기반 인증
<a name="authentication-flows-selection-choice"></a>

애플리케이션은 선택 기반 인증에서 다음 인증 방법을 요청할 수 있습니다. [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html#CognitoUserPools-InitiateAuth-request-AuthParameters) 또는 [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html#CognitoUserPools-AdminInitiateAuth-request-AuthParameters)의 `PREFERRED_CHALLENGE` 파라미터 또는 [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html#CognitoUserPools-RespondToAuthChallenge-request-ChallengeName) 또는 [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html#CognitoUserPools-AdminRespondToAuthChallenge-request-ChallengeName)의 `ChallengeName` 파라미터에서 이러한 옵션을 선언합니다.

1. `EMAIL_OTP` 및 `SMS_OTP`

   [일회용 암호를 통한 암호 없는 로그인](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passwordless)

1. `WEB_AUTHN`

   [WebAuthn 패스키를 사용한 암호 없는 로그인](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passkey)

1. `PASSWORD`

   [영구 암호로 로그인](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-password)

   [영구 암호 및 보안 페이로드로 로그인](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-srp)

   [로그인 후 MFA](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-mfa)

API 컨텍스트에서 이러한 옵션을 검토하려면 [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html#CognitoUserPools-RespondToAuthChallenge-request-ChallengeName)의 `ChallengeName` 섹션을 참조하세요.

선택 기반 로그인은 초기 요청에 대한 응답으로 문제를 실행합니다. 이 문제는 요청된 옵션을 사용할 수 있는지 확인하거나 사용 가능한 선택 사항 목록을 제공합니다. 애플리케이션은 이러한 선택 사항을 사용자에게 표시한 다음 선호하는 로그인 방법에 대한 자격 증명을 입력하고 문제 응답에서 인증을 진행할 수 있습니다.

인증 흐름에는 다음과 같은 선택 기반 옵션이 있습니다. 이 유형의 모든 요청은 앱이 먼저 사용자 이름을 수집하거나 캐시에서 검색해야 합니다.

1. `AuthParameters`의 `USERNAME`만 있는 요청 옵션. Amazon Cognito는 `SELECT_CHALLENGE` 문제를 반환합니다. 여기에서 애플리케이션은 사용자에게 문제를 선택하고 이 응답을 사용자 풀에 반환하라는 메시지를 표시할 수 있습니다.

1. `PREFERRED_CHALLENGE`의 `AuthParameters`와 원하는 문제의 파라미터를 사용하여 원하는 문제를 요청합니다. 예를 들어 `PASSWORD_SRP`의 `PREFERRED_CHALLENGE`를 요청하는 경우 `SRP_A`도 포함해야 합니다. 사용자, 사용자 풀, 앱 클라이언트가 모두 선호하는 문제에 대해 구성된 경우 Amazon Cognito는 해당 문제의 다음 단계로 응답합니다. 예를 들어 `PASSWORD_SRP` 흐름에서는 `PASSWORD_VERIFIER`, `EMAIL_OTP` 및 `SMS_OTP` 흐름에서는 [CodeDeliveryDetails](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CodeDeliveryDetailsType.html)로 응답합니다. 선호하는 문제를 사용할 수 없는 경우 Amazon Cognito는 `SELECT_CHALLENGE` 및 사용 가능한 문제 목록으로 응답합니다.

1. 먼저 사용자를 로그인한 다음 선택 기반 인증 옵션을 요청합니다. 로그인한 사용자의 액세스 토큰이 포함된 [GetUserAuthFactors](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUserAuthFactors.html) 요청은 사용 가능한 선택 기반 인증 요소와 MFA 설정을 반환합니다. 이 옵션을 사용하면 사용자는 먼저 사용자 이름과 암호로 로그인한 다음 다른 형태의 인증을 활성화할 수 있습니다. 이 작업을 사용하여 선호하는 문제로 로그인한 사용자의 추가 옵션을 확인할 수도 있습니다.

선택 기반 인증을 위해 [앱 클라이언트를 구성](authentication.md#authentication-implement)하려면 허용된 인증 흐름에 `ALLOW_USER_AUTH`를 추가합니다. 또한 사용자 풀 구성에서 허용할 선택 기반 요소를 선택해야 합니다. 다음 프로세스는 선택 기반 인증 요소를 선택하는 방법을 보여줍니다.

------
#### [ Amazon Cognito console ]

**사용자 풀에서 선택 기반 인증 옵션을 구성하려면**

1. 에 로그인 AWS 하고 [Amazon Cognito 사용자 풀 콘솔](https://console.aws.amazon.com/cognito/v2/idp)로 이동합니다. 사용자 풀을 선택하거나 새로운 사용자 풀을 생성합니다.

1. 사용자 풀 구성에서 **로그인** 메뉴를 선택합니다. **선택 기반 로그인 옵션**을 찾아 **편집**을 선택합니다.

1. **암호** 옵션은 항상 사용할 수 있습니다. 여기에는 `PASSWORD` 및 `PASSWORD_SRP` 흐름이 포함됩니다. 사용자의 옵션에 추가할 **추가 옵션**을 선택합니다. `WEB_AUTHN`용 **패스키**, `EMAIL_OTP`용 **이메일 메시지 일회용 암호**, `SMS_OTP`용 **SMS 메시지 일회용 암호**를 추가할 수 있습니다.

1. **변경 사항 저장**을 선택합니다.

------
#### [ API/SDK ]

다음 부분 [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html) 또는 [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html) 요청 본문은 선택 기반 인증에 사용할 수 있는 모든 옵션을 구성합니다.

```
"Policies": {
    "SignInPolicy": {
        "AllowedFirstAuthFactors": [
            "PASSWORD",
            "WEB_AUTHN",
            "EMAIL_OTP",
            "SMS_OTP"
        ]
    }
},
```

------

## 클라이언트 기반 인증
<a name="authentication-flows-selection-client"></a>

클라이언트 기반 인증은 다음 인증 흐름을 지원합니다. [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html#CognitoUserPools-InitiateAuth-request-AuthFlow) 또는 [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html#CognitoUserPools-AdminInitiateAuth-request-AuthFlow)의 `AuthFlow` 파라미터에서 이러한 옵션을 선언합니다.

1. `USER_PASSWORD_AUTH` 및 `ADMIN_USER_PASSWORD_AUTH`

   [영구 암호로 로그인](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-password)

   [로그인 후 MFA](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-mfa)

   이 인증 흐름은 선택 기반 인증의 `PASSWORD`와 동일합니다.

1. `USER_SRP_AUTH`

   [영구 암호 및 보안 페이로드로 로그인](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-srp)

   [로그인 후 MFA](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-mfa)

   이 인증 흐름은 선택 기반 인증의 `PASSWORD_SRP`와 동일합니다.

1. `REFRESH_TOKEN_AUTH`

   [새로 고침 토큰](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-refresh)

   이 인증 흐름은 클라이언트 기반 인증에서만 사용할 수 있습니다.

1. `CUSTOM_AUTH`

   [사용자 지정 인증](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-custom)

   이 인증 흐름은 클라이언트 기반 인증에서만 사용할 수 있습니다.

클라이언트 기반 인증을 사용하면 Amazon Cognito는 사용자가 인증 흐름을 시작하기 전에 인증할 방법을 결정했다고 가정합니다. 사용자가 제공하려는 로그인 팩터를 결정하는 로직은 기본 설정 또는 사용자 지정 프롬프트로 결정한 다음 사용자 풀에 대한 첫 번째 요청에서 선언해야 합니다. `InitiateAuth` 요청은 `USER_SRP_AUTH`와 같이 나열된 옵션 중 하나에 직접 해당하는 로그인 `AuthFlow`를 선언합니다. 이 선언을 사용하면 요청에 `USERNAME`, `SECRET_HASH` 및 `SRP_A`와 같이 인증을 시작하는 파라미터도 포함됩니다. Amazon Cognito는 SRP의 경우 `PASSWORD_VERIFIER`, TOTP MFA를 사용한 암호 로그인의 경우 `SOFTWARE_TOKEN_MFA`와 같은 추가적인 문제로 이 요청에 응답할 수 있습니다.

클라이언트 기반 인증을 위해 [앱 클라이언트를 구성](authentication.md#authentication-implement)하려면 허용된 인증 흐름에 `ALLOW_USER_AUTH` 이외의 모든 인증 흐름을 추가합니다. 예: `ALLOW_USER_PASSWORD_AUTH`, `ALLOW_CUSTOM_AUTH`, `ALLOW_REFRESH_TOKEN_AUTH`. 클라이언트 기반 인증 흐름을 허용하려면 추가 사용자 풀 구성이 필요하지 않습니다.

# 인증 흐름
<a name="amazon-cognito-user-pools-authentication-flow-methods"></a>

Amazon Cognito 사용자 풀을 사용한 인증 프로세스는 사용자가 초기 선택을 하고, 자격 증명을 제출하고, 추가 문제에 대응하는 *흐름*으로 가장 잘 설명할 수 있습니다. 애플리케이션에서 관리형 로그인 인증을 구현하면 Amazon Cognito가 이러한 프롬프트 및 문제의 흐름을 관리합니다. 애플리케이션 백엔드에서 AWS SDK로 흐름을 구현할 때는 요청 로직을 구성하고, 사용자에게 입력을 요청하고, 문제에 대응해야 합니다.

애플리케이션 관리자는 사용자 특성, 보안 요구 사항 및 권한 부여 모델을 통해 사용자가 로그인하도록 허용하는 방법을 결정할 수 있습니다. 스스로 다음과 같은 질문을 해보세요.
+ 사용자가 [다른 ID 제공업체(idP)](#amazon-cognito-user-pools-authentication-flow-methods-federated)의 자격 증명으로 로그인하도록 허용하려고 하는가?
+ [사용자 이름과 암호](#amazon-cognito-user-pools-authentication-flow-methods-password)만으로 ID를 증명할 수 있는가?
+ 사용자 이름 암호 인증에 대한 인증 요청을 가로챌 수 있는가? 애플리케이션이 암호를 전송하거나 [해시 및 솔트를 사용하여 인증을 협상](#amazon-cognito-user-pools-authentication-flow-methods-srp)하도록 해야 하는가?
+ 사용자가 암호 입력을 건너뛰고 로그인하는 [일회용 암호를 받도록](#amazon-cognito-user-pools-authentication-flow-methods-passwordless) 허용하려고 하는가?
+ 사용자가 [지문, 얼굴 또는 하드웨어 보안 키](#amazon-cognito-user-pools-authentication-flow-methods-passkey)로 로그인하도록 허용하려고 하는가?
+ [다중 인증(MFA)](#amazon-cognito-user-pools-authentication-flow-methods-mfa)이 필요한 경우는 언제인가?
+ [자격 증명을 다시 프롬프트하지 않고 사용자 세션을 유지](#amazon-cognito-user-pools-authentication-flow-methods-refresh)할 것인가?
+ Amazon Cognito의 기본 기능 이상으로 [권한 부여 모델을 확장](#amazon-cognito-user-pools-authentication-flow-methods-custom)하려고 하는가?

이러한 질문에 대한 답변을 받으면 관련 기능을 활성화하고 애플리케이션이 수행하는 인증 요청에 구현하는 방법을 배울 수 있습니다.

사용자에 대한 로그인 흐름을 설정한 후 [GetUserAuthFactors](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUserAuthFactors.html) API 작업에 대한 요청을 통해 MFA 및 [선택 기반](authentication-flows-selection-sdk.md#authentication-flows-selection-choice) 인증 요소의 현재 상태를 확인할 수 있습니다. 이 작업을 수행하려면 로그인한 사용자의 액세스 토큰으로 인증해야 합니다. 사용자 인증 요소 및 MFA 설정을 반환합니다.

**Topics**
+ [타사 IdP로 로그인](#amazon-cognito-user-pools-authentication-flow-methods-federated)
+ [영구 암호로 로그인](#amazon-cognito-user-pools-authentication-flow-methods-password)
+ [영구 암호 및 보안 페이로드로 로그인](#amazon-cognito-user-pools-authentication-flow-methods-srp)
+ [일회용 암호를 통한 암호 없는 로그인](#amazon-cognito-user-pools-authentication-flow-methods-passwordless)
+ [WebAuthn 패스키를 사용한 암호 없는 로그인](#amazon-cognito-user-pools-authentication-flow-methods-passkey)
+ [로그인 후 MFA](#amazon-cognito-user-pools-authentication-flow-methods-mfa)
+ [새로 고침 토큰](#amazon-cognito-user-pools-authentication-flow-methods-refresh)
+ [사용자 지정 인증](#amazon-cognito-user-pools-authentication-flow-methods-custom)
+ [사용자 마이그레이션 인증 흐름](#amazon-cognito-user-pools-user-migration-authentication-flow)

## 타사 IdP로 로그인
<a name="amazon-cognito-user-pools-authentication-flow-methods-federated"></a>

Amazon Cognito 사용자 풀은 Sign in with Apple, Login with Amazon, OpenID Connect(OIDC) 서비스와 같은 IdP 간 인증 세션의 중간 브로커 역할을 합니다. 이 프로세스를 *페더레이션 로그인* 또는 *페더레이션 인증*이라고도 합니다. 페더레이션 인증은 앱 클라이언트에 빌드할 수 있는 인증 흐름을 사용하지 않습니다. 대신 구성된 사용자 풀 IdP 앱 클라이언트에 할당합니다. 페더레이션 로그인은 사용자가 관리형 로그인에서 IdP를 선택하거나 애플리케이션이 IdP 로그인 페이지로 리디렉션된 세션을 호출할 때 발생합니다.

페더레이션 로그인을 사용하면 기본 및 MFA 인증 요소를 사용자의 IdP에 위임합니다. Amazon Cognito는 [로컬 사용자에 연결](cognito-user-pools-identity-federation-consolidate-users.md)하지 않는 한이 섹션의 다른 고급 흐름을 페더레이션 사용자에게 추가하지 않습니다. 연결되지 않은 페더레이션 사용자는 사용자 이름이 있지만 브라우저 기반 흐름과 관계없이 일반적으로 로그인에 사용되지 않는 매핑된 속성 데이터의 저장소입니다.

**구현 리소스**
+ [타사 ID 제공업체를 통한 사용자 풀 로그인](cognito-user-pools-identity-federation.md)

## 영구 암호로 로그인
<a name="amazon-cognito-user-pools-authentication-flow-methods-password"></a>

Amazon Cognito 사용자 풀에서는 모든 사용자에게 사용자 이름이 있습니다. 전화번호, 이메일 주소 또는 선택한 식별자 또는 관리자가 제공한 식별자일 수 있습니다. 이 유형의 사용자는 사용자 이름과 암호로 로그인하고 선택적으로 MFA를 제공할 수 있습니다. 사용자 풀은 퍼블릭 또는 IAM 인증 API 작업 및 SDK 메서드를 사용하여 사용자 이름 암호 로그인을 수행할 수 있습니다. 애플리케이션은 인증을 위해 암호를 사용자 풀로 직접 전송할 수 있습니다. 사용자 풀은 인증 성공의 결과인 추가 문제 또는 JSON 웹 토큰(JWT)으로 응답합니다.

------
#### [ Activate password sign-in ]

사용자 이름과 암호를 사용하여 [클라이언트 기반 인증](authentication-flows-selection-sdk.md#authentication-flows-selection-client)을 활성화하려면 앱 클라이언트가 이를 허용하도록 구성합니다. Amazon Cognito 콘솔에서 사용자 풀 구성의 **애플리케이션** 아래에 있는 **앱 클라이언트** 메뉴로 이동합니다. 클라이언트 측 모바일 또는 네이티브 앱에 대한 일반 암호 로그인을 허용하려면 앱 클라이언트를 편집하고 **인증 흐름**에서 **사용자 이름과 암호로 로그인: ALLOW\$1USER\$1PASSWORD\$1AUTH**를 선택합니다. 서버 측 앱에 대한 일반 암호 로그인을 허용하려면 앱 클라이언트를 편집하고 **서버 측 관리 자격 증명으로 로그인: ALLOW\$1ADMIN\$1USER\$1PASSWORD\$1AUTH**를 선택합니다.

사용자 이름과 암호로 [선택 기반 인증](authentication-flows-selection-sdk.md#authentication-flows-selection-choice)을 활성화하려면 앱 클라이언트가 이를 허용하도록 구성합니다. 앱 클라이언트를 편집하고 **선택 기반 로그인: ALLOW\$1USER\$1AUTH**를 선택합니다.

![\[앱 클라이언트에 대한 일반 암호 인증 흐름 선택을 보여주는 Amazon Cognito 콘솔의 스크린샷입니다. ALLOW_USER_PASSWORD_AUTH, ALLOW_ADMIN_USER_PASSWORD_AUTH 및 ALLOW_USER_AUTH 옵션이 선택되었습니다.\]](http://docs.aws.amazon.com/ko_kr/cognito/latest/developerguide/images/screenshot-choose-password-admin-password-and-user-auth.png)


선택 기반 인증 흐름에서 암호 인증을 사용할 수 있는지 확인하려면 **로그인 메뉴**로 이동하여 **선택 기반 로그인 옵션** 아래의 섹션을 검토하세요. **사용 가능한 선택 항목**에 **암호**가 표시되는 경우 일반 암호 인증으로 로그인할 수 있습니다. **암호** 옵션에는 일반 및 SRP 사용자 이름-암호 인증 변형이 포함됩니다.

![\[사용자 풀에 대한 USER_AUTH 선택 기반 로그인 구성에서 암호 인증 선택을 보여주는 Amazon Cognito 콘솔의 스크린샷입니다. 암호 옵션이 활성으로 표시됩니다.\]](http://docs.aws.amazon.com/ko_kr/cognito/latest/developerguide/images/screenshot-password-flow-in-user-auth.png)


[CreateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html) 또는 [UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html) 요청에서 원하는 username-and-password 인증 옵션으로 `ExplicitAuthFlows`를 구성합니다.

```
"ExplicitAuthFlows": [ 
   "ALLOW_USER_PASSWORD_AUTH",
   "ALLOW_ADMIN_USER_PASSWORD_AUTH",
   "ALLOW_USER_AUTH"
]
```

[CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html) 또는 [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html) 요청에서 지원하려는 선택 기반 인증 흐름으로 `Policies`를 구성합니다. `AllowedFirstAuthFactors`의 `PASSWORD` 값에는 일반 암호 및 SRP 인증 흐름 옵션이 모두 포함됩니다.

```
"Policies": {
   "SignInPolicy": {
      "AllowedFirstAuthFactors": [
         "PASSWORD",
         "EMAIL_OTP",
         "WEB_AUTHN"
      ]
   }
}
```

------
#### [ Choice-based sign-in with a password ]

사용자 이름 암호 인증으로 애플리케이션에 로그인하려면 다음과 같이 [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html) 또는 [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html) 요청의 본문을 구성합니다. 현재 사용자가 사용자 이름 암호 인증을 받을 수 있는 경우 이 로그인 요청이 성공하거나 다음 문제를 계속 진행합니다. 그렇지 않으면 사용 가능한 기본 인증 문제 목록으로 응답합니다. 이 파라미터 세트는 로그인에 필요한 최소 파라미터입니다. 추가 파라미터를 사용할 수 있습니다.

```
{
   "AuthFlow": "USER_AUTH",
   "AuthParameters": { 
      "USERNAME" : "testuser",
      "PREFERRED_CHALLENGE" : "PASSWORD",
      "PASSWORD" : "[User's password]"
   },
   "ClientId": "1example23456789"
}
```

`PREFERRED_CHALLENGE` 값을 생략하고 사용자의 적격 로그인 요인 목록이 포함된 응답을 받을 수도 있습니다.

```
{
   "AuthFlow": "USER_AUTH",
   "AuthParameters": { 
      "USERNAME" : "testuser"
   },
   "ClientId": "1example23456789"
}
```

선호하는 문제를 제출하지 않았거나 제출된 사용자가 선호하는 문제에 적합하지 않은 경우 Amazon Cognito는 `AvailableChallenges`에서 옵션 목록을 반환합니다. `AvailableChallenges`에 `PASSWORD`의 `ChallengeName`이 포함된 경우 다음 형식으로 [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html) 또는 [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html) 문제 응답을 사용하여 인증을 계속할 수 있습니다. 문제 응답을 초기 로그인 요청에 대한 API 응답과 연결하는 `Session` 파라미터를 전달해야 합니다. 이 파라미터 세트는 로그인에 필요한 최소 파라미터입니다. 추가 파라미터를 사용할 수 있습니다.

```
{
   "ChallengeName": "PASSWORD",
   "ChallengeResponses": { 
      "USERNAME" : "testuser",
      "PASSWORD" : "[User's Password]"
   },
   "ClientId": "1example23456789",
   "Session": "[Session ID from the previous response"
}
```

Amazon Cognito는 토큰 또는 다중 인증(MFA)과 같은 추가 필수 문제를 사용하여 적격하고 성공적인 선호하는 문제 요청 및 `PASSWORD` 문제 응답에 응답합니다.

------
#### [ Client-based sign-in with a password ]

사용자 이름 암호 인증으로 클라이언트 측 앱에 사용자를 로그인하려면 다음과 같이 [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html) 요청의 본문을 구성합니다. 이 파라미터 세트는 로그인에 필요한 최소 파라미터입니다. 추가 파라미터를 사용할 수 있습니다.

```
{
   "AuthFlow": "USER_PASSWORD_AUTH",
   "AuthParameters": { 
      "USERNAME" : "testuser",
      "PASSWORD" : "[User's password]"
   },
   "ClientId": "1example23456789"
}
```

사용자 이름 암호 인증으로 서버 측 앱에 사용자를 로그인하려면 다음과 같이 [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html) 요청의 본문을 구성합니다. 애플리케이션이 자격 AWS 증명으로이 요청에 서명해야 합니다. 이 파라미터 세트는 로그인에 필요한 최소 파라미터입니다. 추가 파라미터를 사용할 수 있습니다.

```
{
   "AuthFlow": "ADMIN_USER_PASSWORD_AUTH",
   "AuthParameters": { 
      "USERNAME" : "testuser",
      "PASSWORD" : "[User's password]"
   },
   "ClientId": "1example23456789"
}
```

Amazon Cognito는 토큰 또는 다중 인증(MFA)과 같은 추가 필수 문제를 사용하여 성공적인 요청에 응답합니다.

------

## 영구 암호 및 보안 페이로드로 로그인
<a name="amazon-cognito-user-pools-authentication-flow-methods-srp"></a>

사용자 풀에서 사용자 이름-암호 로그인 방법의 또 다른 형태는 보안 원격 암호(SRP) 프로토콜을 사용하는 것입니다. 이 옵션은 사용자 풀이 확인할 수 있는 암호 해시 및 솔트와 같은 암호에 대한 지식 증명을 전송합니다. Amazon Cognito에 대한 요청에 읽을 수 있는 보안 암호 정보가 없는 경우 애플리케이션은 사용자가 입력한 암호를 처리하는 유일한 엔터티입니다. SRP 인증에는 SDK에서 가져올 수 있는 기존 구성 요소에서 가장 잘 수행되는 수학적 계산이 포함됩니다. SRP는 일반적으로 모바일 앱과 같은 클라이언트 측 애플리케이션에서 구현됩니다. 프로토콜에 대한 자세한 내용은 [Stanford SRP 홈페이지](http://srp.stanford.edu/)를 참조하세요. [Wikipedia](https://en.wikipedia.org/wiki/Secure_Remote_Password_protocol)에는 리소스와 예시도 있습니다. 인증 흐름에 대한 SRP 계산을 수행하는 데 [다양한 퍼블릭 라이브러리](https://en.wikipedia.org/wiki/Secure_Remote_Password_protocol#Implementations)를 사용할 수 있습니다.

Amazon Cognito 인증의 시작-문제-응답 시퀀스는 SRP를 사용하여 사용자와 암호를 검증합니다. SRP 인증을 지원하도록 사용자 풀 및 앱 클라이언트를 구성한 다음 애플리케이션에서 로그인 요청 및 문제 응답 로직을 구현해야 합니다. SRP 라이브러리는 사용자의 암호를 소유하고 있음을 사용자 풀에 보여주는 난수와 계산된 값을 생성할 수 있습니다. 애플리케이션은 이러한 계산된 값을 Amazon Cognito 사용자 풀 API 작업 및 인증을 위한 SDK 메서드의 JSON 형식 `AuthParameters` 및 `ChallengeParameters` 필드에 채웁니다.

------
#### [ Activate SRP sign-in ]

사용자 이름과 SRP를 사용하여 [클라이언트 기반 인증](authentication-flows-selection-sdk.md#authentication-flows-selection-client)을 활성화하려면 앱 클라이언트가 이를 허용하도록 구성합니다. Amazon Cognito 콘솔에서 사용자 풀 구성의 **애플리케이션** 아래에 있는 **앱 클라이언트** 메뉴로 이동합니다. 클라이언트 측 모바일 또는 네이티브 앱에 대한 SRP 로그인을 허용하려면 앱 클라이언트를 편집하고 **인증 흐름**에서 **보안 원격 암호(SRP)로 로그인: ALLOW\$1USER\$1SRP\$1AUTH**를 선택합니다.

사용자 이름 및 SRP를 사용하여 [선택 기반 인증](authentication-flows-selection-sdk.md#authentication-flows-selection-choice)을 활성화하려면 앱 클라이언트를 편집하고 **선택 기반 로그인: ALLOW\$1USER\$1AUTH**를 선택합니다.

![\[앱 클라이언트에 대한 보안 원격 암호 인증 흐름 선택을 보여주는 Amazon Cognito 콘솔의 스크린샷입니다. ALLOW_USER_SRP_AUTH 및 ALLOW_USER_AUTH 옵션이 선택되었습니다.\]](http://docs.aws.amazon.com/ko_kr/cognito/latest/developerguide/images/screenshot-choose-SRP-and-user-auth.png)


선택 기반 인증 흐름에서 SRP 인증을 사용할 수 있는지 확인하려면 **로그인 메뉴**로 이동하여 **선택 기반 로그인 옵션** 아래의 섹션을 검토하세요. **사용 가능한 선택 항목**에 **암호**가 표시되는 경우 SRP 인증으로 로그인할 수 있습니다. **암호** 옵션에는 일반 텍스트 및 SRP 사용자 이름-암호 인증 변형이 포함됩니다.

![\[사용자 풀에 대한 USER_AUTH 선택 기반 로그인 구성에서 암호 인증 선택을 보여주는 Amazon Cognito 콘솔의 스크린샷입니다. 암호 옵션은 활성으로 표시됩니다.\]](http://docs.aws.amazon.com/ko_kr/cognito/latest/developerguide/images/screenshot-password-flow-in-user-auth.png)


[CreateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html) 또는 [UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html) 요청에서 원하는 username-and-password 인증 옵션으로 `ExplicitAuthFlows`를 구성합니다.

```
"ExplicitAuthFlows": [ 
   "ALLOW_USER_SRP_AUTH",
   "ALLOW_USER_AUTH"
]
```

[CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html) 또는 [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html) 요청에서 지원하려는 선택 기반 인증 흐름으로 `Policies`를 구성합니다. `AllowedFirstAuthFactors`의 `PASSWORD` 값에는 일반 텍스트 암호 및 SRP 인증 흐름 옵션이 모두 포함됩니다.

```
"Policies": {
   "SignInPolicy": {
      "AllowedFirstAuthFactors": [
         "PASSWORD",
         "EMAIL_OTP",
         "WEB_AUTHN"
      ]
   }
}
```

------
#### [ Choice-based sign-in with SRP ]

SRP를 사용하여 사용자 이름 암호 인증으로 애플리케이션에 로그인하려면 다음과 같이 [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html) 또는 [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html) 요청의 본문을 구성합니다. 현재 사용자가 사용자 이름 암호 인증을 받을 수 있는 경우 이 로그인 요청이 성공하거나 다음 문제를 계속 진행합니다. 그렇지 않으면 사용 가능한 기본 인증 문제 목록으로 응답합니다. 이 파라미터 세트는 로그인에 필요한 최소 파라미터입니다. 추가 파라미터를 사용할 수 있습니다.

```
{
   "AuthFlow": "USER_AUTH",
   "AuthParameters": { 
      "USERNAME" : "testuser",
      "PREFERRED_CHALLENGE" : "PASSWORD_SRP",
      "SRP_A" : "[g^a % N]"
   },
   "ClientId": "1example23456789"
}
```

`PREFERRED_CHALLENGE` 값을 생략하고 사용자의 적격 로그인 요인 목록이 포함된 응답을 받을 수도 있습니다.

```
{
   "AuthFlow": "USER_AUTH",
   "AuthParameters": { 
      "USERNAME" : "testuser"
   },
   "ClientId": "1example23456789"
}
```

선호하는 문제를 제출하지 않았거나 제출된 사용자가 선호하는 문제에 적합하지 않은 경우 Amazon Cognito는 `AvailableChallenges`에서 옵션 목록을 반환합니다. `AvailableChallenges`에 `PASSWORD_SRP`의 `ChallengeName`이 포함된 경우 다음 형식으로 [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html) 또는 [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html) 문제 응답을 사용하여 인증을 계속할 수 있습니다. 문제 응답을 초기 로그인 요청에 대한 API 응답과 연결하는 `Session` 파라미터를 전달해야 합니다. 이 파라미터 세트는 로그인에 필요한 최소 파라미터입니다. 추가 파라미터를 사용할 수 있습니다.

```
{
   "ChallengeName": "PASSWORD_SRP",
   "ChallengeResponses": { 
      "USERNAME" : "testuser",
      "SRP_A" : "[g^a % N]"
   },
   "ClientId": "1example23456789",
   "Session": "[Session ID from the previous response"
}
```

Amazon Cognito는 적합한 우선 문제 요청 및 `PASSWORD_SRP` 문제 응답에 `PASSWORD_VERIFIER` 문제로 응답합니다. 클라이언트는 SRP 계산을 완료하고 [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html) 또는 [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html) 요청의 문제에 응답해야 합니다.

```
{
   "ChallengeName": "PASSWORD_VERIFIER",
   "ChallengeResponses": { 
      "PASSWORD_CLAIM_SIGNATURE" : "string",
      "PASSWORD_CLAIM_SECRET_BLOCK" : "string",
      "TIMESTAMP" : "string"
   },
   "ClientId": "1example23456789",
   "Session": "[Session ID from the previous response]"
}
```

성공적인 `PASSWORD_VERIFIER` 문제 응답에서 Amazon Cognito는 토큰 또는 다중 인증(MFA)과 같은 다른 필수 문제를 발급합니다.

------
#### [ Client-based sign-in with SRP ]

SRP 인증은 서버 측 인증보다 클라이언트 측 인증에 더 일반적입니다. 그러나 [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html) 및 [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)에서 SRP 인증을 사용할 수 있습니다. 애플리케이션에 사용자를 로그인하려면 다음과 같이 `InitiateAuth` 또는 `AdminInitiateAuth` 요청의 본문을 구성합니다. 이 파라미터 세트는 로그인에 필요한 최소 파라미터입니다. 추가 파라미터를 사용할 수 있습니다.

클라이언트는 비밀 난수 *a*의 출력으로 증가된 생성기 모듈로 N *g*에서 `SRP_A`를 생성합니다.

```
{
   "AuthFlow": "USER_SRP_AUTH",
   "AuthParameters": { 
      "USERNAME" : "testuser",
      "SRP_A" : "[g^a % N]"
   },
   "ClientId": "1example23456789"
}
```

Amazon Cognito가 `PASSWORD_VERIFIER` 문제로 응답합니다. 클라이언트는 SRP 계산을 완료하고 [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html) 또는 [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html) 요청의 문제에 응답해야 합니다.

```
{
   "ChallengeName": "PASSWORD_VERIFIER",
   "ChallengeResponses": { 
      "PASSWORD_CLAIM_SIGNATURE" : "string",
      "PASSWORD_CLAIM_SECRET_BLOCK" : "string",
      "TIMESTAMP" : "string"
   },
   "ClientId": "1example23456789",
   "Session": "[Session ID from the previous response]"
}
```

성공적인 `PASSWORD_VERIFIER` 문제 응답에서 Amazon Cognito는 토큰 또는 다중 인증(MFA)과 같은 다른 필수 문제를 발급합니다.

------

## 일회용 암호를 통한 암호 없는 로그인
<a name="amazon-cognito-user-pools-authentication-flow-methods-passwordless"></a>

암호를 분실하거나 도난당할 수 있습니다. 사용자가 확인된 이메일 주소, 전화번호 또는 인증 앱에 액세스할 수 있는지만 확인할 수 있습니다. 이에 대한 해결책은 *암호 없는* 로그인입니다. 애플리케이션은 사용자에게 사용자 이름, 이메일 주소 또는 전화번호를 입력하라는 메시지를 표시할 수 있습니다. 그런 다음 Amazon Cognito는 확인해야 하는 일회용 암호(OTP)를 생성합니다. 성공한 코드는 인증을 완료합니다.

일회용 암호(OTP) 인증 흐름은 사용자 풀의 필수 멀티 팩터 인증(MFA)과 호환되지 않습니다. 를 로 설정하면 사용자 확인을 통한 패스키 인증이 MFA 요구 사항을 충족할 수 `FactorConfiguration` 있습니다`MULTI_FACTOR_WITH_USER_VERIFICATION`. 사용자 풀에서 MFA가 선택 사항인 경우 MFA를 활성화한 사용자는 OTP 첫 번째 요소로 로그인할 수 없습니다. MFA 선택 사용자 풀에서 MFA 기본 설정이 없는 사용자는 암호 없는 요인으로 로그인할 수 있습니다. 자세한 내용은 [사용자 풀 MFA에 대해 알아야 할 사항](user-pool-settings-mfa.md#user-pool-settings-mfa-prerequisites) 단원을 참조하십시오.

사용자가 암호 없는 인증의 일부로 SMS 또는 이메일 메시지로 받은 코드를 올바르게 입력하면 사용자 인증 외에도 사용자 풀은 사용자의 검증되지 않은 이메일 주소 또는 전화번호 속성을 검증됨으로 표시합니다. 이메일 주소 또는 전화번호를 [자동으로 확인](signing-up-users-in-your-app.md)하도록 사용자 풀을 구성했는지 여부에 관계없이 사용자 상태도 `UNCONFIRMED`에서 `CONFIRMED`로 변경되었습니다.

**암호 없는 로그인을 사용하는 새로운 옵션**  
사용자 풀에서 암호 없는 인증을 활성화하면 일부 사용자 흐름의 작동 방식이 변경됩니다.

1. 사용자는 암호 없이 가입하고 로그인할 때 암호 없는 요소를 선택할 수 있습니다. 관리자로서 암호 없이 사용자를 생성할 수도 있습니다.

1. [CSV 파일로 가져오는](cognito-user-pools-using-import-tool.md) 사용자는 암호 없는 팩터로 즉시 로그인할 수 있습니다. 로그인하기 전에 암호를 설정할 필요는 없습니다.

1. 암호가 없는 사용자는 `PreviousPassword` 파라미터 없이 [ChangePassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ChangePassword.html) API 요청을 제출할 수 있습니다.

**OTP 사용 자동 로그인**  
이메일 또는 SMS 메시지 OTP를 사용하여 사용자 계정을 가입하고 확인하는 사용자는 확인 메시지와 일치하는 암호 없는 팩터로 자동으로 로그인할 수 있습니다. 관리형 로그인 UI에서 계정을 확인하고 확인 코드 전송 방법을 사용하여 OTP에 로그인할 수 있는 사용자는 확인 코드를 제공한 후 자동으로 첫 번째 로그인을 진행합니다. AWS SDK를 사용하여 사용자 지정 빌드 애플리케이션에서 다음 파라미터를 [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html) 또는 [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html) 작업에 전달합니다.
+ [ConfirmSignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmSignUp.html) API 응답의 `Session` 파라미터를 `Session` 요청 파라미터로 사용합니다.
+ `USER_AUTH`의 [AuthFlow](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html#CognitoUserPools-InitiateAuth-request-AuthFlow)입니다.

`EMAIL_OTP` 또는 `SMS_OTP`의 [PREFERRED\$1CHALLENGE](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html#CognitoUserPools-InitiateAuth-request-AuthParameters)를 전달할 수 있지만 필수는 아닙니다. `Session` 파라미터는 인증 증명을 제공하며 Amazon Cognito는 유효한 세션 코드를 전달할 때 `AuthParameters`를 무시합니다.

로그인 작업은 인증 성공, [AuthenticationResult](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AuthenticationResultType.html)를 나타내는 응답을 반환하며, 다음 조건이 충족되면 추가 문제가 발생하지 않습니다.
+ `Session` 코드가 유효하며 만료되지 않았습니다.
+ 사용자는 OTP 인증 방법을 사용할 수 있습니다.

------
#### [ Activate passwordless sign-in ]

**콘솔**  
암호 없는 로그인을 활성화하려면 하나 이상의 암호 없는 유형으로 기본 로그인을 허용하도록 사용자 풀을 구성한 다음 `USER_AUTH` 흐름을 허용하도록 앱 클라이언트를 구성합니다. Amazon Cognito 콘솔에서 사용자 풀 구성의 **인증** 아래에 있는 **로그인** 메뉴로 이동합니다. **선택 기반 로그인 옵션**을 편집하고 **이메일 메시지 일회용 암호** 또는 **SMS 메시지 일회용 암호**를 선택합니다. 두 옵션을 모두 활성화할 수 있습니다. 변경 내용을 저장합니다.

**앱 클라이언트** 메뉴로 이동하여 앱 클라이언트를 선택하거나 새 클라이언트를 생성합니다. **편집**을 선택하고 **로그인 시 인증 유형 선택: ALLOW\$1USER\$1AUTH**를 선택합니다.

**API/SDK**  
사용자 풀 API에서 [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html) 또는 [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html) 요청의 적절한 암호 없는 옵션으로 `SignInPolicy`를 구성합니다.

```
"SignInPolicy": { 
    "AllowedFirstAuthFactors": [ 
        "EMAIL_OTP",
        "SMS_OTP"
    ]
}
```

[CreateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html) 또는 [UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html) 요청에서 필요한 옵션을 사용하여 앱 클라이언트 `ExplicitAuthFlows`를 구성합니다.

```
"ExplicitAuthFlows": [ 
   "ALLOW_USER_AUTH"
]
```

------
#### [ Sign in with passwordless ]

암호 없는 로그인에는 [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html) 및 [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)에서 지정할 수 있는 [클라이언트 기반](authentication-flows-selection-sdk.md#authentication-flows-selection-client) `AuthFlow`가 없습니다. OTP 인증은 기본 로그인 옵션을 요청하거나 사용자의 [AvailableChallenges](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html#CognitoUserPools-InitiateAuth-response-AvailableChallenges)에서 암호 없는 옵션을 선택할 수 있는 `USER_AUTH`의 [선택 기반](authentication-flows-selection-sdk.md#authentication-flows-selection-choice) `AuthFlow`에서만 사용할 수 있습니다. 애플리케이션에 사용자를 로그인하려면 다음과 같이 `InitiateAuth` 또는 `AdminInitiateAuth` 요청의 본문을 구성합니다. 이 파라미터 세트는 로그인에 필요한 최소 파라미터입니다. 추가 파라미터를 사용할 수 있습니다.

이 예제에서는 사용자가 어떤 방식으로 로그인하고 싶은지 알 수 없습니다. `PREFERRED_CHALLENGE` 파라미터를 추가하고 사용자가 선호하는 문제를 사용할 수 있는 경우 Amazon Cognito는 해당 문제에 응답합니다.

```
{
   "AuthFlow": "USER_AUTH",
   "AuthParameters": { 
      "USERNAME" : "testuser"
   },
   "ClientId": "1example23456789"
}
```

대신이 예제에서 `"PREFERRED_CHALLENGE": "EMAIL_OTP"` 또는 `"PREFERRED_CHALLENGE": "SMS_OTP"`를 `AuthParameters`에 추가할 수 있습니다. 사용자가 원하는 방법을 사용할 수 있는 경우 사용자 풀은 사용자의 이메일 주소 또는 전화번호로 코드를 즉시 전송하고 `"ChallengeName": "EMAIL_OTP"` 또는 `"ChallengeName": "SMS_OTP"`를 반환합니다.

기본 문제를 지정하지 않으면 Amazon Cognito가 `AvailableChallenges` 파라미터로 응답합니다.

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

이 사용자는 이메일 메시지 OTP, SMS 메시지 OTP 및 사용자 이름 암호를 사용하여 암호 없이 로그인할 수 있습니다. 애플리케이션은 사용자에게 선택하라는 메시지를 표시하거나 내부 로직을 기반으로 선택할 수 있습니다. 그런 다음 문제를 선택하는 [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html) 또는 [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html) 요청을 진행합니다. 사용자가 이메일 메시지 OTP를 사용하여 암호 없는 인증을 완료하려고 한다고 가정해 보겠습니다.

```
{
   "ChallengeName": "SELECT_CHALLENGE",
   "ChallengeResponses": { 
      "USERNAME" : "testuser",
      "ANSWER" : "EMAIL_OTP" 
   },
   "ClientId": "1example23456789",
   "Session": "[Session ID from the previous response]"
}
```

Amazon Cognito는 `EMAIL_OTP` 문제로 응답하고 사용자의 확인된 이메일 주소로 코드를 보냅니다. 그러면 애플리케이션이 이 문제에 다시 응답해야 합니다.

`EMAIL_OTP`를 `PREFERRED_CHALLENGE`로 요청한 경우 이는 다음 문제 응답이기도 합니다.

```
{
   "ChallengeName": "EMAIL_OTP",
   "ChallengeResponses": {
      "USERNAME" : "testuser", 
      "EMAIL_OTP_CODE" : "123456" 
   },
   "ClientId": "1example23456789",
   "Session": "[Session ID from the previous response]"
}
```

------

## WebAuthn 패스키를 사용한 암호 없는 로그인
<a name="amazon-cognito-user-pools-authentication-flow-methods-passkey"></a>

패스키는 안전하며 사용자에게 상대적으로 낮은 수준의 작업 부담을 줍니다. 패스키 로그인은 사용자가 인증할 수 있는 외부 장치인 *인증자*를 사용합니다. 일반 암호는 사용자를 피싱, 암호 추측 및 자격 증명 도용과 같은 취약성에 노출시킵니다. 패스키를 사용하면 애플리케이션이 정보 시스템에 연결되거나 내장된 휴대폰 및 기타 디바이스의 고급 보안 조치를 활용할 수 있습니다. 일반적인 패스키 로그인 워크플로는 iOS 키체인 또는 Google Chrome 암호 관리자와 같이 암호 또는 *자격 증명* 관리자를 호출하는 디바이스 호출로 시작됩니다. 디바이스 내 자격 증명 관리자는 패스키를 선택하고 기존 자격 증명 또는 디바이스 잠금 해제 메커니즘으로 권한을 부여하라는 메시지를 표시합니다. 최신 휴대폰에는 얼굴 스캐너, 지문 스캐너, 잠금 해제 패턴 및 기타 메커니즘이 있으며, 일부는 *사용자가 아는 것*과 *사용자가 가진 것*에 대한 강력한 인증 원칙을 동시에 충족합니다. 생체 인식을 이용한 패스키 인증의 경우, 패스키는 *사용자의 신체적 특성*을 나타냅니다.

암호를 지문, 얼굴 또는 보안 키 인증으로 바꿀 수 있습니다. *패스키* 또는 *WebAuthn* 인증입니다. 애플리케이션 개발자는 사용자가 암호로 처음 로그인한 후 생체 인식 디바이스를 등록하도록 허용하는 것이 일반적입니다. Amazon Cognito 사용자 풀을 사용하면 애플리케이션에서 사용자를 위해 이 로그인 옵션을 구성할 수 있습니다. 패스키 인증은 사용자 풀이 로 `FactorConfiguration` 설정된 경우 다중 인증(MFA) 요구 사항을 충족할 수 있습니다`MULTI_FACTOR_WITH_USER_VERIFICATION`. 이 구성에서 사용자 확인이 포함된 패스키 인증은 다중 인증으로 계산됩니다.

일회용 암호(OTP) 인증 흐름은 사용자 풀의 필수 멀티 팩터 인증(MFA)과 호환되지 않습니다. 를 로 설정하면 사용자 확인을 통한 패스키 인증이 MFA 요구 사항을 충족할 수 `FactorConfiguration` 있습니다`MULTI_FACTOR_WITH_USER_VERIFICATION`. 사용자 풀에서 MFA가 선택 사항인 경우 MFA를 활성화한 사용자는 OTP 첫 번째 요소로 로그인할 수 없습니다. MFA 선택 사용자 풀에서 MFA 기본 설정이 없는 사용자는 암호 없는 요인으로 로그인할 수 있습니다. 자세한 내용은 [사용자 풀 MFA에 대해 알아야 할 사항](user-pool-settings-mfa.md#user-pool-settings-mfa-prerequisites) 단원을 참조하십시오.

### 패스키란 무엇인가요?
<a name="amazon-cognito-user-pools-authentication-flow-methods-passkey-what-are"></a>

패스키를 사용하면 복잡한 암호를 기억하거나 OTP를 입력할 필요가 없어 사용자 경험이 단순화됩니다. 패스키는 [W3C(World Wide Web Consortium](https://www.w3.org/TR/webauthn-3/)) 및 Fast Identity Online(FIDO) Alliance에서 초안을 작성한 WebAuthn 및 CTAP2 표준을 기반으로 합니다. 브라우저 및 플랫폼은 이러한 표준을 구현하고, 웹 또는 모바일 애플리케이션을 위한 APIs를 제공하여 패스키 등록 또는 인증 프로세스를 시작하고, 사용자가 패스키 *인증자*를 선택하고 상호 작용할 수 있도록 UI를 제공합니다.

사용자가 웹 사이트 또는 앱에 인증자를 등록하면 인증자는 퍼블릭-프라이빗 키 페어를 생성합니다. WebAuthn 브라우저 및 플랫폼은 웹 사이트 또는 앱의 애플리케이션 백엔드에 퍼블릭 키를 제출합니다. 인증자는 사용자 및 애플리케이션에 대한 프라이빗 키, 키 ID 및 메타데이터를 유지합니다. 사용자가 등록된 인증자로 등록된 애플리케이션에서 인증하려는 경우 애플리케이션은 임의의 문제를 생성합니다. 이 문제에 대한 응답은 해당 애플리케이션 및 사용자에 대한 인증자의 프라이빗 키와 관련 메타데이터로 생성된 문제의 디지털 서명입니다. 브라우저 또는 애플리케이션 플랫폼은 디지털 서명을 수신하여 애플리케이션 백엔드로 전달합니다. 그런 다음 애플리케이션은 저장된 퍼블릭 키로 서명을 검증합니다.

**참고**  
애플리케이션은 사용자가 인증자에게 제공하는 인증 보안 암호를 수신하지 않으며 프라이빗 키에 대한 정보도 수신하지 않습니다.

다음은 현재 출시된 인증자의 몇 가지 예와 기능입니다. 인증자는 이러한 범주 중 일부 또는 전부를 충족할 수 있습니다.
+ 일부 인증자는 액세스 권한을 부여하기 전에 PIN, 얼굴 또는 지문을 사용한 생체 인식 입력 또는 암호와 같은 요소를 사용하여 *사용자 확인*을 수행하여 합법적인 사용자만 작업을 승인할 수 있도록 합니다. 다른 인증자는 사용자 확인 기능이 없으며, 일부 인증자는 애플리케이션에 필요하지 않은 경우 사용자 확인을 건너뛸 수 있습니다.
+ 예를 들어 YubiKey 하드웨어 토큰과 같은 일부 인증자는 휴대가 가능합니다. USB, Bluetooth 또는 NFC 연결을 통해 디바이스와 통신합니다. 일부 인증자는 로컬이며 PC의 Windows Hello 또는 iPhone의 Face ID와 같은 플랫폼에 바인딩됩니다. 디바이스에 바인딩된 인증자는 모바일 디바이스처럼 충분히 작다면 사용자가 휴대할 수 있습니다. 때때로 사용자는 무선 통신을 통해 하드웨어 인증자를 다양한 플랫폼과 연결할 수 있습니다. 예를 들어 데스크톱 브라우저의 사용자는 QR 코드를 스캔할 때 스마트폰을 패스키 인증자로 사용할 수 있습니다.
+ 일부 플랫폼 바인딩 패스키는 클라우드와 동기화되므로 여러 위치에서 사용할 수 있습니다. 예를 들어 iPhones Face ID 패스키는 패스키 메타데이터를 iCloud Keychain의 사용자 Apple 계정과 동기화합니다. 이러한 패스키는 사용자가 각 디바이스를 독립적으로 등록하도록 요구하는 대신 Apple 디바이스에서 원활한 인증을 부여합니다. 1Password, Dashlane, Bitwarden과 같은 소프트웨어 기반 인증 앱은 사용자가 앱을 설치한 모든 플랫폼에서 패스키를 동기화합니다.

WebAuthn 용어에서 웹 사이트와 앱은 *당사자를 신뢰*합니다. 각 패스키는 패스키 인증을 수락하는 웹 사이트 또는 앱을 나타내는 통합 식별자인 특정 신뢰 당사자 ID와 연결됩니다. 개발자는 적절한 인증 범위를 가지려면 신뢰 당사자 ID를 신중하게 선택해야 합니다. 일반적인 신뢰 당사자 ID는 웹 서버의 루트 도메인 이름입니다. 이 신뢰 당사자 ID 사양이 있는 패스키는 해당 도메인 및 하위 도메인에 대해 인증할 수 있습니다. 사용자가 액세스하려는 웹 사이트의 URL이 신뢰 당사자 ID와 일치하지 않는 경우 브라우저 및 플랫폼은 패스키 인증을 거부합니다. 마찬가지로 모바일 앱의 경우 애플리케이션이 신뢰 당사자 ID로 표시된 경로에서 사용할 수 있도록 하는 `.well-known` 연결 파일에 앱 경로가 있는 경우에만 패스키를 사용할 수 있습니다.

패스키를 *검색할 수* 있습니다. 사용자가 사용자 이름을 입력할 필요 없이 브라우저 또는 플랫폼에서 자동으로 인식하고 사용할 수 있습니다. 사용자가 패스키 인증을 지원하는 웹 사이트 또는 앱을 방문하면 브라우저 또는 플랫폼이 이미 알고 있는 패스키 목록에서 선택하거나 QR 코드를 스캔할 수 있습니다.

### Amazon Cognito는 패스키 인증을 어떻게 구현하나요?
<a name="amazon-cognito-user-pools-authentication-flow-methods-passkey-cognito"></a>

패스키는 **Lite**를 제외한 모든 [기능 플랜](cognito-sign-in-feature-plans.md)에서 사용할 수 있는 옵트인 기능입니다. [선택 기반 인증 흐름](authentication-flows-selection-sdk.md#authentication-flows-selection-choice)에서만 사용할 수 있습니다. [관리형 로그인](authentication-flows-selection-managedlogin.md)을 통해 Amazon Cognito는 패스키 인증의 로직을 처리합니다. [AWS SDK의 Amazon Cognito 사용자 풀 API](#amazon-cognito-user-pools-authentication-flow-methods)를 사용하여 애플리케이션 백엔드에서 패스키 인증을 수행할 수도 있습니다.

Amazon Cognito는 두 개의 비대칭 암호화 알고리즘 ES256(-7) 및 RS256(-257) 중 하나를 사용하여 생성된 패스키를 인식합니다. 대부분의 인증자는 두 알고리즘을 모두 지원합니다. 기본적으로 사용자는 하드웨어 토큰, 모바일 스마트폰, 소프트웨어 인증 앱 등 모든 유형의 인증자를 설정할 수 있습니다. Amazon Cognito는 현재 [증명](https://csrc.nist.gov/glossary/term/attestation) 시행을 지원하지 않습니다.

사용자 풀에서 사용자 확인을 기본 설정 또는 필수로 구성할 수 있습니다. 이 설정은 값을 제공하지 않는 API 요청에서 기본 설정으로 기본 설정되며 Amazon Cognito 콘솔에서 기본 설정이 기본적으로 선택됩니다. 사용자 확인을 기본 설정으로 설정하면 사용자는 사용자 확인 기능이 없는 인증자를 설정할 수 있으며 사용자 확인 없이 등록 및 인증 작업이 성공할 수 있습니다. 패스키 등록 및 인증에서 사용자 확인을 요구하려면 이 설정을 필수로 변경합니다.

패스키 구성에서 설정한 신뢰 당사자(RP) ID는 중요한 결정입니다. 달리 지정하지 않고 [도메인 브랜딩 버전](managed-login-branding.md)이 관리형 로그인인 경우 사용자 풀은 기본적으로 [사용자 지정 도메인](cognito-user-pools-add-custom-domain.md)의 이름을 RP ID로 예상합니다. 사용자 지정 도메인이 없고 달리 지정하지 않으면 사용자 풀은 기본적으로 [접두사 도메인](cognito-user-pools-assign-domain-prefix.md)의 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을 **타사 도메인**으로 입력합니다.

------
#### [ Activate passkey sign-in ]

**콘솔**  
패스키로 로그인을 활성화하려면 하나 이상의 암호 없는 유형으로 기본 로그인을 허용하도록 사용자 풀을 구성한 다음 `USER_AUTH` 흐름을 허용하도록 앱 클라이언트를 구성합니다. Amazon Cognito 콘솔에서 사용자 풀 구성의 **인증** 아래에 있는 **로그인** 메뉴로 이동합니다. **선택 기반 로그인에 대한 옵션**을 편집하고 **사용 가능한 선택 항목** 목록에 **패스키**를 추가합니다.

**인증 방법** 메뉴로 이동하여 **패스키**를 편집합니다.
+ **사용자 확인**은 사용자 풀에 현재 사용자에게 패스키 권한이 있는지 추가로 확인하는 패스키 디바이스가 필요한지 여부를 설정하는 것입니다. 사용자가 사용자 검증을 통해 디바이스를 구성하도록 권장하지만 필수는 아닌 경우, **선호 사항**을 선택합니다. 사용자 확인 기능이 있는 디바이스만 지원하려면 **필수**를 선택합니다. 자세한 내용은 w3.org [사용자 확인](https://www.w3.org/TR/webauthn-2/#user-verification)을 참조하세요.
+ **신뢰 당사자 ID의 도메인**은 애플리케이션이 사용자의 패스키 등록 요청 시 전달하는 식별자입니다. 사용자 패스키 발급자와의 신뢰 관계 대상을 설정합니다. 신뢰 당사자 ID는 사용자 풀의 도메인과 같을 수 있습니다.  
**Cognito 도메인**  
사용자 풀의 Amazon Cognito [접두사 도메인](cognito-user-pools-assign-domain-prefix.md).  
**사용자 지정 도메인**  
사용자 풀의 [사용자 지정 도메인](cognito-user-pools-add-custom-domain.md).  
**서드파티 도메인**  
사용자 풀 관리형 로그인 페이지를 사용하지 않는 애플리케이션의 도메인입니다. 이 설정은 일반적으로 [도메인](cognito-user-pools-assign-domain.md)이 없고 백엔드에서 AWS SDK 및 사용자 풀 API로 인증을 수행하는 사용자 풀과 연결됩니다.

**앱 클라이언트** 메뉴로 이동하여 앱 클라이언트를 선택하거나 새 클라이언트를 생성합니다. **편집**을 선택하고 **인증 흐름**에서 **로그인 시 인증 유형 선택: ALLOW\$1USER\$1AUTH**를 선택합니다.

**API/SDK**  
사용자 풀 API에서 [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html) 또는 [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html) 요청의 적절한 패스키 옵션으로 `SignInPolicy`를 구성합니다. 패스키 인증 `WEB_AUTHN` 옵션에는 하나 이상의 다른 옵션이 포함되어야 합니다. 패스키 등록에는 기존 인증 세션이 필요합니다.

```
"SignInPolicy": { 
    "AllowedFirstAuthFactors": [ 
        "PASSWORD",
        "WEB_AUTHN"
    ]
}
```

[SetUserPoolMfaConfig](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUserPoolMfaConfig.html#CognitoUserPools-SetUserPoolMfaConfig-request-WebAuthnConfiguration) 요청의 `WebAuthnConfiguration` 파라미터에서 사용자 확인 기본 설정과 RP ID를 구성합니다. 패스키 인증 결과의 대상인 `RelyingPartyId`는 사용자 풀 접두사 또는 사용자 지정 도메인이거나 사용자가 선택한 도메인일 수 있습니다.

```
"WebAuthnConfiguration": { 
   "RelyingPartyId": "example.auth.us-east-1.amazoncognito.com",
   "UserVerification": "preferred",
   "FactorConfiguration": "SINGLE_FACTOR"
}
```

[CreateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html) 또는 [UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html) 요청에서 필요한 옵션을 사용하여 앱 클라이언트 `ExplicitAuthFlows`를 구성합니다.

```
"ExplicitAuthFlows": [ 
   "ALLOW_USER_AUTH"
]
```

------
#### [ Register a passkey (managed login) ]

관리형 로그인은 패스키의 사용자 등록을 처리합니다. 사용자 풀에서 패스키 인증이 활성화되면 Amazon Cognito는 새 사용자 계정에 등록할 때 사용자에게 패스키를 설정하라는 메시지를 표시합니다.

Amazon Cognito는 사용자가 이미 가입하여 패스키를 설정하지 않았거나 관리자로 계정을 생성한 경우 사용자에게 패스키를 설정하라는 메시지를 표시하지 않습니다. 이 상태의 사용자는 패스키를 등록하기 전에 암호 또는 암호 없는 OTP와 같은 다른 요소로 로그인해야 합니다.

**패스키를 등록하려면**

1. 사용자를 [로그인 페이지](authorization-endpoint.md)로 안내합니다.

   ```
   https://auth.example.com/oauth2/authorize/?client_id=1example23456789&response_type=code&scope=email+openid+phone&redirect_uri=https%3A%2F%2Fwww.example.com
   ```

1. 사용자의 인증 결과를 처리합니다. 이 예제에서 Amazon Cognito는 애플리케이션이 토큰으로 교환하는 권한 부여 코드를 사용하여 `www.example.com`으로 리디렉션합니다.

1. 사용자를 등록-패스키 페이지로 안내합니다. 사용자는 로그인 세션을 유지하는 브라우저 쿠키를 갖게 됩니다. 패스키 URL은 `client_id` 및 `redirect_uri` 파라미터를 사용합니다. Amazon Cognito는 인증된 사용자만 이 페이지에 액세스할 수 있도록 허용합니다. 암호, 이메일 OTP 또는 SMS OTP로 사용자를 로그인한 후, 다음 패턴과 일치하는 URL을 호출합니다.

   이 요청에 `response_type` 및 `scope`와 같은 다른 [권한 부여 엔드포인트](authorization-endpoint.md) 파라미터를 추가할 수도 있습니다.

   ```
   https://auth.example.com/passkeys/add?client_id=1example23456789&redirect_uri=https%3A%2F%2Fwww.example.com
   ```

------
#### [ Register a passkey (SDK) ]

[PublicKeyCreationOptions](https://www.w3.org/TR/webauthn-3/#dictdef-publickeycredentialcreationoptions) 객체의 메타데이터에 패스키 자격 증명을 등록합니다. 로그인한 사용자의 자격 증명으로 이 객체를 생성하고 API 요청에서 패스키 발급자에게 제공할 수 있습니다. 발급자는 패스키 등록을 확인하는 [RegistrationResponseJSON](https://www.w3.org/TR/webauthn-3/#dictdef-registrationresponsejson) 객체를 반환합니다.

패스키 등록 프로세스를 시작하려면 기존 로그인 옵션으로 사용자를 로그인합니다. 현재 사용자의 액세스 토큰을 사용하여 [토큰 인증](authentication-flows-public-server-side.md#user-pool-apis-auth-unauth-token-auth) [StartWebAuthnRegistration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_StartWebAuthnRegistration.html) API 요청을 승인합니다. 다음은 `GetWebAuthnRegistrationOptions` API 요청 예시의 본문입니다.

```
{
   "AccessToken": "eyJra456defEXAMPLE"
}
```

사용자 풀의 응답에는 `PublicKeyCreationOptions` 객체가 포함됩니다. API 요청에 이 객체를 사용자의 발급자에게 제공합니다. 퍼블릭 키 및 신뢰 당사자 ID와 같은 정보를 제공합니다. 발급자는 `RegistrationResponseJSON` 객체로 응답합니다.

사용자의 액세스 토큰으로 다시 승인된 [CompleteWebAuthnRegistration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CompleteWebAuthnRegistration.html) API 요청에 등록 응답을 제공합니다. 사용자 풀이 본문이 비어 있는 HTTP 200 응답으로 응답하면 사용자의 패스키가 등록됩니다.

------
#### [ Sign in with a passkey ]

암호 없는 로그인에는 [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html) 및 [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)에서 지정할 수 있는 `AuthFlow`가 없습니다. 대신 `USER_AUTH`의 `AuthFlow`를 선언하고 로그인 옵션을 요청하거나 사용자 풀의 응답에서 암호 없는 옵션을 선택해야 합니다. 애플리케이션에 사용자를 로그인하려면 다음과 같이 `InitiateAuth` 또는 `AdminInitiateAuth` 요청의 본문을 구성합니다. 이 파라미터 세트는 로그인에 필요한 최소 파라미터입니다. 추가 파라미터를 사용할 수 있습니다.

이 예제에서는 사용자가 패스키로 로그인하려는 것을 알고 있으며 `PREFERRED_CHALLENGE` 파라미터를 추가합니다.

```
{
   "AuthFlow": "USER_AUTH",
   "AuthParameters": { 
      "USERNAME" : "testuser",
      "PREFERRED_CHALLENGE" : "WEB_AUTHN"
   },
   "ClientId": "1example23456789"
}
```

Amazon Cognito가 `WEB_AUTHN` 문제로 응답합니다. 애플리케이션이 이 문제에 응답해야 합니다. 사용자의 패스키 공급자로 로그인 요청을 시작합니다. [AuthenticationResponseJSON](https://www.w3.org/TR/webauthn-3/#dictdef-authenticationresponsejson) 객체를 반환합니다.

```
{
   "ChallengeName": "WEB_AUTHN",
   "ChallengeResponses": {
      "USERNAME" : "testuser", 
      "CREDENTIAL" : "{AuthenticationResponseJSON}" 
   },
   "ClientId": "1example23456789",
   "Session": "[Session ID from the previous response]"
}
```

------

## 로그인 후 MFA
<a name="amazon-cognito-user-pools-authentication-flow-methods-mfa"></a>

사용자 이름-암호 흐름으로 로그인을 완료하는 사용자에게 이메일 메시지, SMS 메시지 또는 코드 생성 애플리케이션의 일회용 암호로 추가 확인을 요청하도록 설정할 수 있습니다. MFA는 일회용 암호를 사용한 암호 없는 로그인과 구별됩니다. 그러나 사용자 확인이 포함된 패스키는 사용자 풀 `MULTI_FACTOR_WITH_USER_VERIFICATION`에서를 `FactorConfiguration`로 구성할 때 MFA 요구 사항을 충족할 수 있습니다`WebAuthnConfiguration`. 암호 기반 흐름의 경우 사용자 풀의 MFA는 사용자가 먼저 암호를 알고 있음을 보여준 다음 등록된 2단계 디바이스에 액세스할 수 있음을 보여 주는 챌린지-응답 모델입니다.

**구현 리소스**
+ [사용자 풀에 MFA 추가](user-pool-settings-mfa.md)

## 새로 고침 토큰
<a name="amazon-cognito-user-pools-authentication-flow-methods-refresh"></a>

자격 증명을 다시 입력하지 않고 사용자를 로그인 상태로 유지하려는 경우 *새로 고침 토큰*은 애플리케이션이 사용자의 세션을 유지해야 하는 도구입니다. 애플리케이션은 사용자 풀에 새로 고침 토큰을 제공하고 새 ID 및 액세스 토큰으로 교환할 수 있습니다. 토큰 새로 고침을 사용하면 로그인한 사용자가 여전히 활성 상태인지 확인하고, 업데이트된 속성 정보를 가져오고, 사용자 개입 없이 액세스 제어 권한을 업데이트할 수 있습니다.

**구현 리소스**
+ [새로 고침 토큰](amazon-cognito-user-pools-using-the-refresh-token.md)

## 사용자 지정 인증
<a name="amazon-cognito-user-pools-authentication-flow-methods-custom"></a>

여기에 나열되지 않은 사용자에 대한 인증 방법을 구성할 수 있습니다. Lambda 트리거를 사용한 *사용자 지정 인증*으로 이 작업을 수행할 수 있습니다. 일련의 Lambda 함수에서 Amazon Cognito는 문제를 실행하고, 사용자가 답변해야 하는 질문을 하고, 답변의 정확성을 확인한 다음 다른 문제를 실행해야 하는지 여부를 결정합니다. 질문과 답변에는 보안 질문, CAPTCHA 서비스에 대한 요청, 외부 MFA 서비스 API에 대한 요청 또는 이 모든 것이 순서대로 포함될 수 있습니다.

**구현 리소스**
+ [사용자 정의 인증 챌린지 Lambda 트리거](user-pool-lambda-challenge.md)

### 사용자 지정 인증 흐름
<a name="amazon-cognito-user-pools-custom-authentication-flow"></a>

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 설명서](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/Welcome.html)를 참조하세요.

### 사용자 지정 인증 흐름 및 챌린지
<a name="Custom-authentication-flow-and-challenges"></a>

앱은 `CUSTOM_AUTH`를 `Authflow`로 지정해 `InitiateAuth`를 호출하여 사용자 지정 인증 흐름을 시작할 수 있습니다. 사용자 지정 인증 흐름을 사용하면 세 개의 Lambda 트리거에서 문제 및 응답의 확인을 제어합니다.
+ `DefineAuthChallenge` Lambda 트리거는 이전 문제와 응답의 세션 배열을 입력으로 사용합니다. 그리고 나서 다음 문제 이름 및 사용자가 인증되었는지 그리고 토큰이 부여될 수 있는지를 나타내는 부울을 생성합니다. 이 Lambda 트리거는 문제를 통해 사용자의 경로를 제어하는 상태 시스템입니다.
+ `CreateAuthChallenge` Lambda 트리거는 문제 이름을 입력으로 사용하고 문제 및 파라미터를 생성하여 응답을 평가합니다. `DefineAuthChallenge`에서 `CUSTOM_CHALLENGE`를 다음 문제로 반환하면 인증 흐름에서 `CreateAuthChallenge`를 호출합니다. 이 `CreateAuthChallenge` Lambda 트리거는 다음 문제 유형을 문제 메타데이터 파라미터로 전달합니다.
+ `VerifyAuthChallengeResponse` Lambda 함수가 응답을 평가하고 부울을 반환하여 응답이 유효한지 여부를 나타냅니다.

사용자 지정 인증 흐름은 SRP 암호 확인 및 SMS를 통한 MFA와 같은 기본 제공 챌린지를 조합하여 사용할 수 있습니다. 또한 CAPTCHA 또는 보안 암호 질문과 같은 사용자 지정 챌린지를 사용할 수 있습니다.

### 사용자 지정 인증 흐름에서 SRP 암호 확인 사용
<a name="Using-SRP-password-verification-in-custom-authentication-flow"></a>

사용자 지정 인증 흐름에 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 트리거](user-pool-lambda-challenge.md)를 활성화할 수 없습니다.

Lambda 트리거에 대한 자세한 내용은 [Lambda 트리거를 사용하여 사용자 풀 워크플로 사용자 정의](cognito-user-pools-working-with-lambda-triggers.md) 섹션을 참조하세요.

## 사용자 마이그레이션 인증 흐름
<a name="amazon-cognito-user-pools-user-migration-authentication-flow"></a>

사용자 마이그레이션 Lambda 트리거는 기존 사용자 관리 시스템에서 사용자 풀로의 마이그레이션을 도와줍니다. `USER_PASSWORD_AUTH` 인증 흐름을 선택하면 사용자 마이그레이션 과정에서 사용자가 암호를 재설정할 필요가 없습니다. 이 흐름은 인증 시 암호화된 SSL 연결을 통해 사용자의 암호를 서비스로 보냅니다.

모든 사용자를 마이그레이션하면 이 흐름을 보다 안전한 SRP 흐름으로 전환합니다. SRP 흐름은 네트워크를 통해 암호를 보내지 않습니다.

Lambda 트리거에 대해 자세히 알아보려면 [Lambda 트리거를 사용하여 사용자 풀 워크플로 사용자 정의](cognito-user-pools-working-with-lambda-triggers.md) 섹션을 참조하세요.

Lambda 트리거를 사용한 사용자 마이그레이션에 대한 자세한 내용은 [사용자 마이그레이션 Lambda 트리거를 사용하여 사용자 가져오기](cognito-user-pools-import-using-lambda.md) 섹션을 참조하세요.

# API 및 SDK 인증을 위한 권한 부여 모델
<a name="authentication-flows-public-server-side"></a>

사용자 풀 인증을 사용하여 애플리케이션 개발을 시작할 때는 애플리케이션 유형에 맞는 API 권한 부여 모델을 결정해야 합니다. 권한 부여 모델은 Amazon Cognito 사용자 풀 API 및 SDK 통합에서 인증 구성 요소를 사용하여 요청할 수 있는 권한을 제공하는 시스템입니다. Amazon Cognito에는 IAM 권한 부여, 퍼블릭 및 토큰 권한 부여의 세 가지 권한 부여 모델이 있습니다.

IAM 권한 부여 요청의 경우, 요청 `Authorization` 헤더에 있는 일련의 AWS IAM 자격 증명에 의한 서명을 통해 권한 부여가 이루어집니다. 서버 측 애플리케이션의 경우 이 방법은 IAM 권한 부여를 통해 인증 작업을 보호합니다. 퍼블릭(인증되지 않은) 인증 요청의 경우 권한 부여가 필요하지 않습니다. 이는 사용자에게 배포된 클라이언트 측 애플리케이션에 적합합니다. 일반적으로 퍼블릭 작업과 함께 구현되는 토큰 인증 작업의 경우 권한 부여는 요청의 `Authorization` 헤더에 포함된 세션 토큰 또는 액세스 토큰에서 비롯됩니다. Amazon Cognito 인증을 사용하려면 일반적으로 두 개 이상의 API 작업을 순서대로 구현해야 하며, 사용하는 API 작업은 애플리케이션의 특성에 따라 달라집니다. 애플리케이션이 사용자에게 배포되는 퍼블릭 클라이언트는 로그인 요청에 권한이 필요하지 않은 퍼블릭 작업을 사용합니다. 토큰 인증 작업은 퍼블릭 애플리케이션에서 사용자 세션을 계속합니다. 애플리케이션 로직이 원격 시스템에서 호스팅되는 서버 측 클라이언트는 로그인 요청에 대한 IAM 권한 부여를 통해 인증 작업을 보호합니다. 이어지는 API 작업 페어와 해당 SDK 메서드는 사용 가능한 권한 부여 모델에 매핑됩니다.

각 퍼블릭 인증 작업에는 서버 측에서 동등한 작업이 있는데, 예를 들어 [UpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserAttributes.html) 및 [AdminUpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateUserAttributes.html)가 있습니다. 클라이언트 측 작업은 사용자가 시작하고 확인이 필요하지만 서버 측 작업은 변경 사항이 사용자 풀 관리자가 커밋했고 변경 사항이 즉시 적용되었다고 가정합니다. 이 예제에서 Amazon Cognito는 사용자에게 확인 코드가 포함된 메시지를 전송하고 사용자의 액세스 토큰은 코드를 제출하는 [VerifyUserAttribute](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerifyUserAttribute.html) 요청을 승인합니다. 서버 측 애플리케이션은 로그인에 사용할 때 이메일 주소 및 전화번호 값을 변경하는 데 [특별한 고려 사항이 적용](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateUserAttributes.html#CognitoUserPools-AdminUpdateUserAttributes-request-UserAttributes)되지만 속성의 값을 즉시 설정할 수 있습니다.

API 인증을 비교하고 API 작업 및 권한 부여 모델의 전체 목록을 보려면 [API, OIDC 및 관리형 로그인 페이지 인증 이해](#user-pools-API-operations) 섹션을 참조하세요.

------
#### [ Client-side (public) authentication ]

다음은 클라이언트 측 애플리케이션의 일반적인 요청 시퀀스입니다.

1. 퍼블릭 [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html) 작업은 사용자 이름 및 암호와 같은 기본 자격 증명을 제출합니다.

1. 토큰 인증 [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html) 작업은 `InitiateAuth` 응답의 *세션* 토큰과 MFA와 같은 문제에 대한 답변을 제출합니다. 세션 토큰 권한 부여는 아직 완료되지 않은 인증 주기의 일부인 요청을 나타냅니다.

1. 토큰 인증 [ConfirmDevice](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmDevice.html) 작업은 *액세스* 토큰을 제출하고 기억된 디바이스를 사용자 프로필에 추가하는 쓰기 작업을 수행합니다. 액세스 토큰 권한 부여는 인증을 완료한 후 사용자 셀프 서비스 작업에 대한 요청을 나타냅니다.

자세한 내용은 [클라이언트 측 인증 옵션](#amazon-cognito-user-pools-client-side-authentication-flow) 및 [API, OIDC 및 관리형 로그인 페이지 인증 이해](#user-pools-API-operations) 섹션을 참조하세요.

------
#### [ Server-side authentication ]

다음은 서버 측 작업의 일반적인 요청 시퀀스입니다. 각 요청에는 애플리케이션 서버에 발급된 IAM 시스템 자격 증명으로 서명된 [AWS 서명 버전 4](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html) 권한 부여 헤더가 있습니다.

1. [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html) 작업은 사용자 이름 및 암호와 같은 기본 자격 증명을 제출합니다.

1. [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html) 작업은 MFA와 같은 문제에 대한 답변을 제출합니다.

1. [AdminUpdateDeviceStatus](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateDeviceStatus.html) 작업은 `AdminInitiateAuth` [응답](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html#API_AdminInitiateAuth_ResponseSyntax)의 디바이스 키를 기억된 대로 설정합니다.

자세한 내용은 [서버 측 인증 옵션](#amazon-cognito-user-pools-server-side-authentication-flow) 및 [API, OIDC 및 관리형 로그인 페이지 인증 이해](#user-pools-API-operations) 섹션을 참조하세요.

------

인증이 실패하거나 Amazon Cognito가 사용자에게 토큰이 발행할 때까지 사용자는 연속 문제에 대답하여 인증합니다. 모든 사용자 지정 인증 흐름을 지원하기 위해 서로 다른 문제가 포함된 프로세스에서 Amazon Cognito를 통해 이러한 단계를 반복할 수 있습니다.

**Topics**
+ [서버 측 인증 옵션](#amazon-cognito-user-pools-server-side-authentication-flow)
+ [클라이언트 측 인증 옵션](#amazon-cognito-user-pools-client-side-authentication-flow)
+ [API, OIDC 및 관리형 로그인 페이지 인증 이해](#user-pools-API-operations)
+ [권한 부여 모델별로 그룹화된 API 작업 목록](#user-pool-apis-auth-unauth)

## 서버 측 인증 옵션
<a name="amazon-cognito-user-pools-server-side-authentication-flow"></a>

웹 애플리케이션 및 기타 *서버 측* 애플리케이션은 클라이언트가 브라우저 또는 SSH 세션과 같은 원격 디스플레이 애플리케이션에서 로드하는 원격 서버에 인증을 구현합니다. 서버 측 애플리케이션은 일반적으로 다음과 같은 특성을 갖습니다.
+ Java, Ruby 또는 Node.js와 같은 언어로 서버에 설치된 애플리케이션에 내장되어 있습니다.
+ *기밀 클라이언트*라고 하는 클라이언트 보안 암호가 있을 수 있는 사용자 풀 [앱 클라이언트](user-pool-settings-client-apps.md)에 연결합니다.
+ 자격 AWS 증명에 액세스할 수 있습니다.
+ 인증을 위해 [관리형 로그인](cognito-user-pools-managed-login.md)을 호출하거나 AWS SDK를 사용하여 사용자 풀 API에서 IAM 인증 작업을 사용합니다.
+ 내부 고객에게 서비스를 제공하고 공개 고객에게 서비스를 제공할 수 있습니다.

사용자 풀 API를 사용하는 서버 측 작업은 암호, 일회용 암호 또는 패스키를 기본 로그인 요소로 사용할 수 있습니다. 서버 측 앱의 경우 사용자 풀 인증은 클라이언트 측 앱에 대한 인증과 유사합니다. 단, 다음은 예외입니다.
+ 서버 측 앱은 [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html) API 요청을 합니다. 이 작업에는 `cognito-idp:AdminInitiateAuth` 및를 포함하는 권한이 있는 AWS 자격 증명이 필요합니다`cognito-idp:AdminRespondToAuthChallenge`. 작업은 필요한 문제 또는 인증 결과를 반환합니다.
+ 애플리케이션이 문제를 수신하면 [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html) API 요청을 수행합니다. 또한 `AdminRespondToAuthChallenge` API 작업에는 AWS 자격 증명이 필요합니다.

 AWS 자격 증명을 사용하여 Amazon Cognito API 요청에 서명하는 방법에 대한 자세한 내용은 *AWS 일반* 참조의 [서명 버전 4 서명 프로세스를](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html) 참조하세요.

`AdminInitiateAuth` 응답 `ChallengeParameters`에 `USER_ID_FOR_SRP` 속성이 있으면 별칭(이메일 주소 또는 전화번호)이 아닌 사용자의 실제 사용자 이름이 이 속성에 포함됩니다. `AdminRespondToAuthChallenge`를 호출할 때 `ChallengeResponses`에서 `USERNAME` 파라미터에 이 사용자 이름을 전달해야 합니다.

**참고**  
백엔드 관리 구현은 관리 인증 흐름을 사용하기 때문에 이러한 흐름에서 기억된 디바이스를 지원하지 않습니다. 디바이스 추적이 설정되면 관리 인증이 성공하지만 액세스 토큰을 새로 고치는 호출은 실패합니다.

## 클라이언트 측 인증 옵션
<a name="amazon-cognito-user-pools-client-side-authentication-flow"></a>

모바일 앱 및 기타 *클라이언트 측* 애플리케이션 유형은 사용자의 디바이스에 설치되며 로컬에서 인증 및 사용자 인터페이스 로직을 수행합니다. 일반적으로 다음과 같은 특성이 있습니다.
+ React 네이티브, Flutter, Swift와 같은 언어로 빌드되어 사용자 디바이스에 배포됩니다.
+ *퍼블릭 클라이언트*라는 클라이언트 보안 암호가 없는 사용자 풀 [앱 클라이언트](user-pool-settings-client-apps.md)에 연결합니다.
+ IAM 인증 API 요청을 승인하는 AWS 자격 증명에 액세스할 수 없습니다.
+ 인증을 위해 [관리형 로그인](cognito-user-pools-managed-login.md)을 호출하거나 AWS SDK를 사용하여 사용자 풀 API에서 퍼블릭 및 토큰 인증 작업을 사용합니다.
+ 퍼블릭 고객에게 서비스를 제공하고 누구나 가입하고 로그인할 수 있도록 허용합니다.

사용자 풀 API를 사용하는 클라이언트 측 작업은 암호, 일회용 암호 또는 패스키를 기본 로그인 요소로 사용할 수 있습니다. 다음 프로세스는 [AWS Amplify](https://docs.amplify.aws/javascript/start/getting-started/) 또는 [AWS SDK](https://aws.amazon.com/developer/tools/)로 생성한 사용자 클라이언트 측 앱을 대상으로 수행됩니다.

1. 사용자가 사용자 이름 및 암호를 앱에 입력합니다.

1. 앱이 사용자의 사용자 이름 및 Secure Remote Password(SRP) 세부 정보를 사용하여 `InitiateAuth` 작업을 호출합니다.

   이 API 작업은 인증 파라미터를 반환합니다.
**참고**  
이 앱은 AWS SDK에 기본 제공된 Amazon Cognito SRP 기능을 사용하여 SRP 세부 정보를 생성합니다.

1. 앱이 `RespondToAuthChallenge` 작업을 호출합니다. 호출에 성공하면 Amazon Cognito에서 사용자 토큰을 반환하고 인증 흐름이 완료됩니다.

   Amazon Cognito에 다른 문제가 필요한 경우 `RespondToAuthChallenge`에 대한 호출이 토큰을 반환하지 않습니다. 대신 이러한 호출은 세션을 반환합니다.

1. `RespondToAuthChallenge`가 세션을 반환하는 경우 이번에는 앱이 세션 및 챌린지 응답(예: MFA 코드)과 함께 `RespondToAuthChallenge`를 다시 호출합니다.

## API, OIDC 및 관리형 로그인 페이지 인증 이해
<a name="user-pools-API-operations"></a>

Amazon Cognito 사용자 풀은 여러 인증 기술의 조합입니다. 이들은 외부 ID 제공업체(idP)에 대한 의존 당사자입니다. 이들은 OpenID Connect(OIDC) SDK를 사용하여 인증을 구현하는 애플리케이션에 대한 IdP입니다. 이들은 OIDC 인증과 유사한 JSON 웹 토큰(JWT) 발급자로서 인증을 제공하지만, AWS SDK의 일부인 API 메서드를 사용합니다. 또한 애플리케이션에 대한 보안 진입점일 수도 있습니다.

사용자 풀에 가입하고, 로그인하고, 사용자 풀에서 사용자를 관리할 때는 두 가지 옵션을 사용할 수 있습니다.

1. *관리형 로그인 페이지*와 클래식 *호스팅 UI*에는 [관리형 로그인 사용자 대화형 엔드포인트](managed-login-endpoints.md)와 IdP 및 신뢰 당사자 역할을 처리하는 [페더레이션 엔드포인트](federation-endpoints.md)가 포함됩니다. 이 엔드포인트는 사용자 풀에 사용할 [도메인을 선택](cognito-user-pools-assign-domain.md)할 때 Amazon Cognito가 활성화하는 퍼블릭 웹 페이지 패키지를 구성합니다. 가입, 로그인, 암호 관리 및 다중 인증(MFA) 페이지를 비롯한 Amazon Cognito 사용자 풀의 인증 및 권한 부여 기능을 빠르게 시작하려면, 관리형 로그인의 내장 사용자 인터페이스를 사용하세요.

   다른 사용자 풀 엔드포인트는 서드 파티 ID 제공업체(idP)를 사용한 인증을 용이하게 합니다. 이들이 수행하는 서비스에는 다음이 포함됩니다.

   1. `saml2/idpresponse` 및 `oauth2/idpresponse` 등 IdP의 인증된 클레임을 위한 서비스 공급자 콜백 엔드포인트. Amazon Cognito가 앱과 IdP 사이의 중간 서비스 공급자(SP)인 경우 콜백 엔드포인트는 서비스를 나타냅니다.

   1. `oauth2/userInfo` 및 `/.well-known/jwks.json` 등 환경에 대한 정보를 제공하는 엔드포인트. 앱은 OIDC 또는 OAuth 2.0 개발자 라이브러리를 사용하여 토큰을 확인하거나 사용자 프로필 데이터를 검색할 때 이러한 엔드포인트를 사용합니다.

1. [Amazon Cognito 사용자 풀 API](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/Welcome.html)는 사용자 지정 프런트 엔드에서 로그인 정보를 수집한 후 웹 또는 모바일 앱에서 사용자를 인증하는 데 사용할 수 있는 도구 세트입니다. 사용자 풀 API 인증은 다음 JSON 웹 토큰을 생성합니다.

   1. 사용자의 검증 가능한 속성 클레임이 포함된 자격 증명 토큰.

   1. [AWS  서비스 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/cognito_identity.html)에 대한 토큰 인증된 API 요청을 생성할 권한을 사용자에게 부여하는 액세스 토큰.
**참고**  
기본적으로 사용자 풀 API 인증의 액세스 토큰에는 `aws.cognito.signin.user.admin` 범위만 포함되어 있습니다. 추가 범위가 포함된 액세스 토큰을 생성하려면(예: 서드 파티 API에 대한 요청 승인을 위해) 사용자 풀 엔드포인트를 통한 인증 중에 범위를 요청하거나 [사전 토큰 생성 Lambda 트리거](user-pool-lambda-pre-token-generation.md)에서 사용자 지정 범위를 추가합니다. 액세스 토큰 사용자 지정은 AWS 청구서에 비용을 추가합니다.

   1. 새 ID 및 액세스 토큰에 대한 요청을 승인하고 사용자 ID 및 액세스 제어 속성을 새로 고치는 새로 고침 토큰입니다.

일반적으로 사용자 풀 엔드포인트를 통해 로그인하는 페더레이션 사용자를 프로필이 사용자 풀에 *로컬*인 사용자와 연결할 수 있습니다. 로컬 사용자는 외부 IdP를 통한 페더레이션 없이 사용자 풀 디렉터리에만 존재합니다. [AdminLinkProviderForUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminLinkProviderForUser.html) API 요청에서 로컬 사용자에 페더레이션 자격 증명을 연결하면 해당 사용자가 사용자 풀 API로 로그인할 수 있습니다. 자세한 내용은 [페더레이션 사용자를 기존 사용자 프로필에 연결](cognito-user-pools-identity-federation-consolidate-users.md) 단원을 참조하십시오.

Amazon Cognito 사용자 풀 API는 두 가지 용도로 사용합니다.

1. 이 API는 Amazon Cognito 사용자 풀 리소스를 생성하고 구성합니다. 예를 들어 사용자 풀을 생성하고, AWS Lambda 트리거를 추가하고, 관리형 로그인 페이지를 호스팅하는 사용자 풀 도메인을 구성할 수 있습니다.

1. 로컬 및 연결된 사용자의 가입, 로그인 및 기타 사용자 작업을 수행합니다.

**Amazon Cognito 사용자 풀 API를 사용한 예제 시나리오**

1. 앱에서 생성한 “Create an account(계정 만들기)” 버튼을 사용자가 선택합니다. 사용자가 이메일 주소와 암호를 입력합니다.

1. 앱에서 [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html) API 요청을 보내고 사용자 풀에 새 사용자를 생성합니다.

1. 앱에서 사용자에게 이메일 확인 코드를 입력하라는 메시지를 표시합니다. 사용자가 이메일 메시지로 받은 코드를 입력합니다.

1. 앱은 [ConfirmSignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmSignUp.html) API 요청과 사용자의 확인 코드를 전송합니다.

1. 앱이 사용자 이름과 암호를 입력하라는 메시지를 표시하고, 사용자가 자신의 정보를 입력합니다.

1. 앱은 [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html) API 요청을 보내고 ID 토큰, 액세스 토큰 및 새로 고침 토큰을 저장합니다. 앱은 OIDC 라이브러리를 호출하여 사용자의 토큰을 관리하고 해당 사용자의 영구 세션을 유지합니다.

Amazon Cognito 사용자 풀 API에서는 IdP를 통해 페더레이션하는 사용자를 로그인할 수 없습니다. 사용자 풀 엔드포인트를 통해 이러한 사용자를 인증해야 합니다. 관리형 로그인을 포함하는 사용자 풀 엔드포인트에 대한 자세한 내용은 [사용자 풀 엔드포인트 및 관리형 로그인 참조](cognito-userpools-server-contract-reference.md) 섹션을 참조하세요.

페더레이션 사용자는 관리형 로그인에서 시작하여 IdP를 선택하거나, 관리형 로그인을 건너뛰고 사용자를 IdP로 직접 보내 로그인하게 할 수 있습니다. [권한 부여 엔드포인트](authorization-endpoint.md)에 대한 API 요청에 IdP 파라미터가 포함되면, Amazon Cognito는 사용자를 자동으로 IdP 로그인 페이지로 리디렉션합니다.

**관리형 로그인 페이지가 있는 예제 시나리오**

1. 앱에서 생성한 “Create an account(계정 만들기)” 버튼을 사용자가 선택합니다.

1. 관리형 로그인은 개발자 보안 인증 정보를 등록한 소셜 ID 공급자 목록을 사용자에게 제시합니다. 사용자가 Apple을 선택합니다.

1. 앱에서 공급자 이름 `SignInWithApple`로 [권한 부여 엔드포인트](authorization-endpoint.md)에 대한 요청을 시작합니다.

1. 사용자의 브라우저에서 Apple 인증 페이지가 열립니다. 사용자가 로그인하여 Amazon Cognito가 자신의 프로필 정보를 읽도록 승인합니다.

1. Amazon Cognito가 Apple 액세스 토큰을 확인하고 사용자의 Apple 프로필을 쿼리합니다.

1. 사용자가 앱에 Amazon Cognito 인증 코드를 제시합니다.

1. 애플리케이션의 OIDC 라이브러리는 [Token 엔드포인트](token-endpoint.md)와 승인 코드를 교환하고 사용자 풀에서 발급한 ID 토큰, 액세스 토큰, 새로 고침 토큰을 저장합니다. 앱은 OIDC 라이브러리를 사용하여 사용자의 토큰을 관리하고 해당 사용자의 영구 세션을 유지합니다.

사용자 풀 API와 관리형 로그인 페이지는 이 안내서 전체에서 설명하는 다양한 시나리오를 지원합니다. 다음 섹션에서는 사용자 풀 API를 가입, 로그인, 리소스 관리 요구 사항을 지원하는 클래스로 구분하는 방법을 살펴봅니다.

## 권한 부여 모델별로 그룹화된 API 작업 목록
<a name="user-pool-apis-auth-unauth"></a>

리소스 관리 인터페이스이자 사용자 대면 인증 및 권한 부여 인터페이스인 Amazon Cognito 사용자 풀 API는 운영에 동반되는 권한 부여 모델을 결합합니다. API 작업에 따라 IAM 자격 증명, 액세스 토큰, 세션 토큰, 클라이언트 암호 또는 이들의 조합을 통해 인증을 제공해야 할 수 있습니다. 대부분의 사용자 인증 및 권한 부여 작업의 경우, 요청의 인증 버전과 미인증 버전을 선택할 수 있습니다. 모바일 앱처럼 사용자에게 배포하는 앱의 경우 미인증 작업이 모범 사례입니다. 코드에 보안 암호를 포함하지 않아도 됩니다.

[IAM 권한 부여 관리 작업](#user-pool-apis-auth-unauth-sigv4-management) 및 [IAM 권한 부여 사용자 작업](#user-pool-apis-auth-unauth-sigv4-user)에 대한 IAM 정책에서만 권한을 할당할 수 있습니다.

### IAM 권한 부여 관리 작업
<a name="user-pool-apis-auth-unauth-sigv4-management"></a>

IAM 권한 부여 관리 작업은 AWS Management Console에서처럼 사용자 풀 및 앱 클라이언트 구성을 수정하고 확인합니다.

예를 들어 [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html) API 요청에서 사용자 풀을 수정하려면 자격 AWS 증명과 IAM 권한을 제시하여 리소스를 업데이트해야 합니다.

 AWS Command Line Interface (AWS CLI) 또는 AWS SDK에서 이러한 요청을 승인하려면 요청에 IAM 자격 증명을 추가하는 환경 변수 또는 클라이언트 구성으로 환경을 구성합니다. 자세한 내용은의 자격 [AWS 증명을 AWS 사용하여 액세스를 참조하세요](https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys)*AWS 일반 참조*. Amazon Cognito 사용자 풀 API의 [서비스 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/cognito_identity.html)로 바로 요청을 보낼 수도 있습니다. 요청의 헤더에 포함된 AWS 자격 증명을 사용하여 이러한 요청을 승인하거나 *서명해야* 합니다. 자세한 내용은 [AWS API 요청 서명을 참조하세요](https://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html).


| IAM 권한 부여 관리 작업 | 
| --- |
| [AddCustomAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AddCustomAttributes.html) | 
| [CreateGroup](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateGroup.html) | 
| [CreateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateIdentityProvider.html) | 
| [CreateResourceServer](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateResourceServer.html) | 
| [CreateUserImportJob](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserImportJob.html) | 
| [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html) | 
| [CreateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html) | 
| [CreateUserPoolDomain](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolDomain.html) | 
| [DeleteGroup](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteGroup.html) | 
| [DeleteIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteIdentityProvider.html) | 
| [DeleteResourceServer](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteResourceServer.html) | 
| [DeleteUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteUserPool.html) | 
| [DeleteUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteUserPoolClient.html) | 
| [DeleteUserPoolDomain](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteUserPoolDomain.html) | 
| [DescribeIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeIdentityProvider.html) | 
| [DescribeResourceServer](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeResourceServer.html) | 
| [DescribeRiskConfiguration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeRiskConfiguration.html) | 
| [DescribeUserImportJob](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeUserImportJob.html) | 
| [DescribeUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeUserPool.html) | 
| [DescribeUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeUserPoolClient.html) | 
| [DescribeUserPoolDomain](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeUserPoolDomain.html) | 
| [GetCSVHeader](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetCSVHeader.html) | 
| [GetGroup](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetGroup.html) | 
| [GetIdentityProviderByIdentifier](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetIdentityProviderByIdentifier.html) | 
| [GetSigningCertificate](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetSigningCertificate.html) | 
| [GetUICustomization](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUICustomization.html) | 
| [GetUserPoolMfaConfig](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUserPoolMfaConfig.html) | 
| [ListGroups](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListGroups.html) | 
| [ListIdentityProviders](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListIdentityProviders.html) | 
| [ListResourceServers](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListResourceServers.html) | 
| [ListTagsForResource](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListTagsForResource.html) | 
| [ListUserImportJobs](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListUserImportJobs.html) | 
| [ListUserPoolClients](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListUserPoolClients.html) | 
| [ListUserPools](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListUserPools.html) | 
| [ListUsers](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListUsers.html) | 
| [ListUsersInGroup](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListUsersInGroup.html) | 
| [SetRiskConfiguration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetRiskConfiguration.html) | 
| [SetUICustomization](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUICustomization.html) | 
| [SetUserPoolMfaConfig](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUserPoolMfaConfig.html) | 
| [StartUserImportJob](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_StartUserImportJob.html) | 
| [StopUserImportJob](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_StopUserImportJob.html) | 
| [TagResource](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_TagResource.html) | 
| [UntagResource](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UntagResource.html) | 
| [UpdateGroup](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateGroup.html) | 
| [UpdateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateIdentityProvider.html) | 
| [UpdateResourceServer](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateResourceServer.html) | 
| [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html) | 
| [UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html) | 
| [UpdateUserPoolDomain](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolDomain.html) | 

### IAM 권한 부여 사용자 작업
<a name="user-pool-apis-auth-unauth-sigv4-user"></a>

IAM 권한 부여 사용자 작업은 사용자의 가입, 로그인, 보안 인증 정보 관리, 수정 및 보기를 수행합니다.

예를 들어 웹 프런트 엔드를 지원하는 서버 측 애플리케이션 계층을 보유할 수 있습니다. 서버 측 앱은 Amazon Cognito 리소스에 대한 액세스 권한이 있는 신뢰하는 OAuth 기밀 클라이언트입니다. 앱에서 사용자를 등록하려면 서버에서 [AdminCreateUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminCreateUser.html) API 요청에 AWS 보안 인증 정보를 포함하면 됩니다. OAuth 클라이언트 유형에 대한 자세한 내용은 *OAuth 2.0 인증 프레임워크*의 [클라이언트 유형](https://www.rfc-editor.org/rfc/rfc6749#section-2.1)을 참조하세요.

 AWS CLI 또는 AWS SDK에서 이러한 요청을 승인하려면 요청에 IAM 자격 증명을 추가하는 환경 변수 또는 클라이언트 구성으로 서버 측 앱 환경을 구성합니다. 자세한 내용은의 자격 [AWS 증명을 AWS 사용하여 액세스를 참조하세요](https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys)*AWS 일반 참조*. Amazon Cognito 사용자 풀 API의 [서비스 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/cognito_identity.html)로 바로 요청을 보낼 수도 있습니다. 요청의 헤더에 포함된 AWS 자격 증명을 사용하여 이러한 요청을 승인하거나 *서명해야* 합니다. 자세한 내용은 [AWS API 요청 서명을 참조하세요](https://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html).

앱 클라이언트에 클라이언트 보안 암호가 있는 경우 `AuthParameters`에 IAM 자격 증명과, 작업에 따라 `SecretHash` 파라미터 또는 `SECRET_HASH` 값을 입력해야 합니다. 자세한 내용은 [보안 암호 해시 값 컴퓨팅](signing-up-users-in-your-app.md#cognito-user-pools-computing-secret-hash) 단원을 참조하십시오.


| IAM 권한 부여 사용자 작업 | 
| --- |
| [AdminAddUserToGroup](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminAddUserToGroup.html) | 
| [AdminConfirmSignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminConfirmSignUp.html) | 
| [AdminCreateUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminCreateUser.html) | 
| [AdminDeleteUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminDeleteUser.html) | 
| [AdminDeleteUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminDeleteUserAttributes.html) | 
| [AdminDisableProviderForUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminDisableProviderForUser.html) | 
| [AdminDisableUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminDisableUser.html) | 
| [AdminEnableUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminEnableUser.html) | 
| [AdminForgetDevice](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminForgetDevice.html) | 
| [AdminGetDevice](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminGetDevice.html) | 
| [AdminGetUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminGetUser.html) | 
| [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html) | 
| [AdminLinkProviderForUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminLinkProviderForUser.html) | 
| [AdminListDevices](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminListDevices.html) | 
| [AdminListGroupsForUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminListGroupsForUser.html) | 
| [AdminListUserAuthEvents](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminListUserAuthEvents.html) | 
| [AdminRemoveUserFromGroup](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRemoveUserFromGroup.html) | 
| [AdminResetUserPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminResetUserPassword.html) | 
| [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html) | 
| [AdminSetUserMFAPreference](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminSetUserMFAPreference.html) | 
| [AdminSetUserPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminSetUserPassword.html) | 
| [AdminSetUserSettings](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminSetUserSettings.html) | 
| [AdminUpdateAuthEventFeedback](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateAuthEventFeedback.html) | 
| [AdminUpdateDeviceStatus](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateDeviceStatus.html) | 
| [AdminUpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateUserAttributes.html) | 
| [AdminUserGlobalSignOut](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUserGlobalSignOut.html) | 

### 미인증 사용자 작업
<a name="user-pool-apis-auth-unauth-unauth"></a>

미인증 사용자 작업은 사용자의 가입, 로그인 및 암호 재설정 시작 작업을 수행합니다. 인터넷에 있는 모든 사용자가 앱에 가입하고 로그인할 수 있게 하려면 미인증, 즉 공개 API 작업을 사용해야 합니다.**

예를 들어 앱에 사용자를 등록하려면 보안 암호에 대한 어떠한 권한 액세스도 제공하지 않는 OAuth 공개 클라이언트를 배포하면 됩니다. 미인증 API 작업 [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html)을 이용해 이 사용자를 등록할 수 있습니다.

 AWS SDK로 개발한 퍼블릭 클라이언트에서 이러한 요청을 보내려면 자격 증명을 구성할 필요가 없습니다. 추가 인증 없이 Amazon Cognito 사용자 풀 API의 [서비스 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/cognito_identity.html)로 바로 요청을 보낼 수도 있습니다.

앱 클라이언트에 클라이언트 보안 암호가 있는 경우 작업에 따라 `AuthParameters`에 `SecretHash` 파라미터 또는 `SECRET_HASH` 값을 입력해야 합니다. 자세한 내용은 [보안 암호 해시 값 컴퓨팅](signing-up-users-in-your-app.md#cognito-user-pools-computing-secret-hash) 단원을 참조하십시오.


| 미인증 사용자 작업 | 
| --- |
| [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html) | 
| [ConfirmSignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmSignUp.html) | 
| [ResendConfirmationCode](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ResendConfirmationCode.html) | 
| [ForgotPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ForgotPassword.html) | 
| [ConfirmForgotPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmForgotPassword.html) | 
| [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html) | 

### 토큰 권한 부여 사용자 작업
<a name="user-pool-apis-auth-unauth-token-auth"></a>

토큰으로 권한이 부여된 사용자 작업은 사용자가 로그인하거나 로그인 프로세스를 시작한 후 사용지 로그아웃, 보안 인증 정보 관리, 수정 및 확인 작업을 수행합니다. 앱에서 보안 암호를 배포하지 않고 사용자 자신의 자격 증명으로 요청을 승인하고 싶다면, 토큰으로 권한이 부여된 API 작업을 사용해야 합니다. 사용자가 로그인을 완료한 경우 액세스 토큰을 사용하여 토큰으로 권한이 부여된 API 요청을 승인해야 합니다. 사용자가 로그인 프로세스를 진행 중이라면, Amazon Cognito가 이전 요청에 대한 응답으로 반환한 세션 토큰을 사용하여 토큰으로 권한이 부여된 API 요청을 승인해야 합니다.

예를 들어 공개 클라이언트에서는 사용자 자신의 프로필에 대한 쓰기 권한만 제한하는 방식으로 사용자 프로필을 업데이트해야 할 수 있습니다. 이 업데이트를 수행하기 위해 클라이언트는 [UpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserAttributes.html) API 요청에 사용자의 액세스 토큰을 포함할 수 있습니다.

 AWS SDK로 개발한 퍼블릭 클라이언트에서 이러한 요청을 보내려면 자격 증명을 구성할 필요가 없습니다. 요청에 `AccessToken` 또는 `Session` 파라미터를 포함합니다. Amazon Cognito 사용자 풀 API의 [서비스 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/cognito_identity.html)로 바로 요청을 보낼 수도 있습니다. 서비스 엔드포인트에 대한 요청을 승인하려면 요청의 POST 본문에 액세스 또는 세션 토큰을 포함합니다.

토큰으로 권한이 부여된 작업을 위한 API 요청에 서명하려면 액세스 토큰을 `Bearer <Base64-encoded access token>` 형식의 `Authorization` 헤더로 요청에 포함하세요.


| 토큰 권한 부여 사용자 작업 | AccessToken | 세션 | 
| --- |--- |--- |
| [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html) |  | ✓ | 
| [ChangePassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ChangePassword.html) | ✓ |  | 
| [GetUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUser.html) | ✓ |  | 
| [StartWebAuthnRegistration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_StartWebAuthnRegistration.html) | ✓ |  | 
| [CompleteWebAuthnRegistration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CompleteWebAuthnRegistration.html) | ✓ |  | 
| [DeleteWebAuthnCredential](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteWebAuthnCredential.html) | ✓ |  | 
| [ListWebAuthnCredentials](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListWebAuthnCredentials.html) | ✓ |  | 
| [UpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserAttributes.html) | ✓ |  | 
| [DeleteUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteUserAttributes.html) | ✓ |  | 
| [DeleteUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteUser.html) | ✓ |  | 
| [ConfirmDevice](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmDevice.html) | ✓ |  | 
| [ForgetDevice](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ForgetDevice.html) | ✓ |  | 
| [GetDevice](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetDevice.html) | ✓ |  | 
| [ListDevices](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListDevices.html) | ✓ |  | 
| [UpdateDeviceStatus](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateDeviceStatus.html) | ✓ |  | 
| [GetUserAttributeVerificationCode](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUserAttributeVerificationCode.html) | ✓ |  | 
| [VerifyUserAttribute](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerifyUserAttribute.html) | ✓ |  | 
| [SetUserSettings](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUserSettings.html) | ✓ |  | 
| [SetUserMFAPreference](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUserMFAPreference.html) | ✓ |  | 
| [GlobalSignOut](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GlobalSignOut.html) | ✓ |  | 
| [UpdateAuthEventFeedback](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateAuthEventFeedback.html) |  | ✓ | 
| [AssociateSoftwareToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AssociateSoftwareToken.html) | ✓ | ✓ | 
| [VerifySoftwareToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerifySoftwareToken.html) | ✓ | ✓ | 
| [RevokeToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RevokeToken.html)¹ |  |  | 
| [GetTokensFromRefreshToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetTokensFromRefreshToken.html)¹ |  |  | 

¹ `RevokeToken` 및 `GetTokensFromRefreshToken`은 새로 고침 토큰을 권한 부여 파라미터로 사용합니다. 새로 고침 토큰은 인증 토큰 및 대상 리소스 역할을 합니다.