

# Amazon Cognito 사용자 풀을 권한 부여자로 사용하여 REST API에 대한 액세스 제어
<a name="apigateway-integrate-with-cognito"></a>

[IAM 역할 및 정책](permissions.md) 또는 [Lambda 권한 부여자](apigateway-use-lambda-authorizer.md)(이전에는 사용자 지정 권한 부여자라고 함)를 사용하는 것 말고도 [Amazon Cognito 사용자 풀](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-identity-pools.html)을 사용하여 Amazon API Gateway에서 API에 액세스할 수 있는 사람을 제어할 수도 있습니다.

API에 Amazon Cognito 사용자 풀을 사용하려면 먼저 `COGNITO_USER_POOLS` 유형의 권한 부여자를 생성한 다음 해당 권한 부여자를 사용하도록 API 메서드를 구성해야 합니다. API가 배포된 후 클라이언트는 먼저 사용자 풀에 사용자를 로그인하고, 해당 사용자의 [자격 증명 또는 액세스 토큰](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-with-identity-providers.html)을 획득한 다음 일반적으로 요청의 `Authorization` 헤더로 설정되는 토큰 1개를 사용하여 API 메서드를 호출해야 합니다. API 호출은 필요한 토큰이 제공되고 제공된 토큰이 유효한 경우에만 성공하며, 그렇지 않으면 권한이 부여될 수 있는 자격 증명이 클라이언트에게 없기 때문에 호출할 권한이 클라이언트에게 부여되지 않습니다.

자격 증명 토큰은 로그인한 사용자의 자격 증명 클레임을 기반으로 API 호출 권한을 부여하는 데 사용됩니다. 액세스 토큰은 지정된 액세스 보호 리소스의 사용자 지정 범위를 기반으로 API 호출 권한을 부여하는 데 사용됩니다. 자세한 내용은 [사용자 풀에 토큰 사용](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-with-identity-providers.html)과 [리소스 서버 및 사용자 지정 범위](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-define-resource-servers.html)를 참조하세요.

API를 위한 Amazon Cognito 사용자 풀을 생성하고 구성하려면 다음 작업을 수행하세요.
+ Amazon Cognito 콘솔, CLI/SDK 또는 API를 사용하여 사용자 풀을 생성하거나 다른 AWS 계정이 소유한 사용자 풀을 사용합니다.
+ API Gateway 콘솔, CLI/SDK 또는 API를 사용하여 선택한 사용자 풀이 포함된 API Gateway 권한 부여자를 생성합니다.
+ 선택한 API 메서드에서 API Gateway 콘솔, CLI/SDK 또는 API를 사용하여 권한 부여자를 활성화합니다.

 사용자 풀이 활성화된 상태에서 API 메서드를 호출하기 위해 API 클라이언트는 다음 작업을 수행합니다.
+  Amazon Cognito CLI/SDK 또는 API를 사용하여 선택한 사용자 풀에 사용자를 로그인하고 자격 증명 토큰 또는 액세스 토큰을 획득합니다. SDK 사용에 대한 자세히 내용은 [AWS SDK를 사용한 Amazon Cognito 코드 예시](https://docs.aws.amazon.com/cognito/latest/developerguide/service_code_examples.html)를 참조하세요.
+  클라이언트별 프레임워크를 사용하여 배포된 API Gateway API를 호출하고 `Authorization` 헤더에서 적절한 토큰을 제공합니다.

API 개발자는 클라이언트 개발자에게 사용자 풀 ID와 클라이언트 ID 및 가능한 경우, 사용자 풀의 일부로 정의되는 연결된 클라이언트 비밀번호를 제공해야 합니다.

**참고**  
사용자가 Amazon Cognito 자격 증명을 사용하여 로그인하고 IAM 역할 권한과 함께 사용할 임시 자격 증명도 획득하게 하려면 [Amazon Cognito 연동 ID](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-identity.html)를 사용합니다. 각 API 리소스 엔드포인트 HTTP 메서드에 대해 권한 부여 유형을 설정하고 `Method Execution` 범주를 `AWS_IAM`으로 설정합니다.

이 단원에서는 사용자 풀을 생성하고, API Gateway API를 사용자 풀과 통합하고, 사용자 풀에 통합된 API를 호출하는 방법을 설명합니다.

**Topics**
+ [REST API에 대한 Amazon Cognito 사용자 풀 생성](apigateway-create-cognito-user-pool.md)
+ [REST API와 Amazon Cognito 사용자 풀 통합](apigateway-enable-cognito-user-pool.md)
+ [Amazon Cognito 사용자 풀과 통합된 REST API 호출](apigateway-invoke-api-integrated-with-cognito-user-pool.md)
+ [API Gateway 콘솔을 사용하여 REST API를 위한 교차 계정 Amazon Cognito 권한 부여자 구성](apigateway-cross-account-cognito-authorizer.md)
+ [CloudFormation을 사용하여 REST API를 위한 Amazon Cognito 권한 부여자 생성](apigateway-cognito-authorizer-cfn.md)