모바일 앱을 위한 Amazon Cognito 사용 - AWS Identity and Access Management

모바일 앱을 위한 Amazon Cognito 사용

웹 자격 증명 페더레이션 사용에서 선호되는 방식은 Amazon Cognito를 사용하는 것입니다. 예를 들어 개발자 Adele이 점수와 프로필이 같은 사용자 데이터가 Amazon S3와 Amazon DynamoDB에 저장되는 모바일 디바이스를 위한 게임을 만들고 있다고 합시다. Adele은 그 디바이스에 이 데이터를 로컬 저장하고 Amazon Cognito를 사용해 여러 디바이스에 걸쳐 데이터를 동기화할 수도 있습니다. Adele은 보안 및 유지 보수 상의 이유로 장기 AWS 보안 자격 증명은 게임과 함께 배포되어서는 안 된다는 것을 알고 있습니다. 또한, 게임 사용자가 아주 많을 수도 있다는 것을 알고 있습니다. 이 모든 이유로 인해 Adele은 각 플레이어에 대해 IAM에서 새로운 사용자 자격 증명을 생성하길 원하지 않습니다. 대신에 사용자가 Login with Amazon, Facebook, Google 또는 OpenID Connect(OIDC) 호환 자격 증명 공급자(IdP)와 같은 널리 알려진 외부 IdP를 통해 이미 설정한 자격 증명을 사용해 로그인할 수 있도록 게임을 구축합니다. Adele의 게임은 이러한 공급자 중 하나의 인증 메커니즘을 이용해 사용자의 자격 증명을 확인할 수 있습니다.

모바일 앱을 활성화해 자신의 AWS 리소스에 액세스하기 위해 Adele은 먼저 자신이 선택한 IdP로 개발자 ID를 등록합니다. Adele은 이들 각 공급자로 애플리케이션을 구성하기도 합니다. Adele은 게임에 대한 Amazon S3 버킷 및 DynamoDB 테이블이 저장된 AWS 계정에서 Amazon Cognito를 사용해 게임이 필요한 권한을 정확하게 정의하는 IAM 역할을 생성합니다. Adele이 OIDC IdP를 사용하고 있다면, IAM OIDC 자격 증명 공급자 엔터티를 생성하여 자신의 AWS 계정과 IdP 사이에 신뢰를 설정하기도 합니다.

앱의 코드에서 Adele은 자신이 이전에 구성한 IdP에 대한 로그인 인터페이스를 호출합니다. IdP는 사용자가 로그인하도록 허용하는 모든 세부 정보를 처리하고 앱은 공급자에게서 OAuth 액세스 토큰 또는 OIDC ID 토큰을 얻습니다. Adele의 앱은 이 인증 정보를 주고 AWS 액세스 키 ID, 보안 액세스 키 및 세션 토큰으로 구성된 임시 보안 자격 증명 집합을 얻을 수 있습니다. 그러면 앱은 이러한 자격 증명을 사용하여 AWS가 제공하는 웹 서비스에 액세스할 수 있습니다. 앱은 수임하는 역할에 정의된 권한으로 제한됩니다.

다음 그림은 Login with Amazon을 IdP로 사용하는 경우 이것이 어떻게 작동하는지 그 흐름을 단순화해 보여줍니다. 2단계에서 앱은 Facebook, Google 또는 OIDC 호환 IdP를 사용할 수도 있지만, 여기에서는 생략했습니다.


      모바일 애플리케이션을 위한 사용자 연동을 위해 Amazon Cognito를 사용하는 샘플 워크플로우

  1. 고객은 모바일 디바이스에서 앱을 시작합니다. 앱은 사용자에게 로그인하도록 요청합니다.

  2. 앱은 Login with Amazon 리소스를 사용해 사용자의 자격 증명을 수락합니다.

  3. 앱은 Cognito API 작업을 사용해 Login with Amazon ID 토큰을 Cognito 토큰과 교환합니다.

  4. 앱은 Cognito 토큰을 전달하면서 AWS STS에서 임시 보안 자격 증명을 요청합니다.

  5. 임시 보안 자격 증명은 앱에 의해 사용됨으로써 앱이 작동을 요청하는 어떤 AWS 리소스에도 액세스할 수 있습니다. 임시 보안 자격 증명과 연결된 역할과 그에 할당된 정책은 액세스 가능한 대상을 결정합니다.

다음 절차를 통해 앱이 Amazon Cognito를 사용해 사용자를 인증하도록 구성하고 앱에게 AWS 리소스에 대한 액세스 권한을 부여하십시오. 이 시나리오를 완수하기 위한 특정 단계에 대해서는 Amazon Cognito에 대한 문서 단원을 참조하십시오.

  1. (선택 사항) Login with Amazon, Facebook, Google 또는 기타 OpenID Connect(OIDC)–호환 IdP를 통해 개발자로 가입하여 그 공급자를 통해 1개 이상의 앱을 구성합니다. Amazon Cognito는 사용자를 위해 인증되지 않은(게스트) 액세스도 지원하기 때문에 이 단계는 옵션입니다.

  2. AWS Management Console의 Amazon Cognito로 이동합니다. Amazon Cognito 마법사를 사용해 자격 증명 풀을 생성합니다. 이 풀은 Amazon Cognito가 앱을 위해 최종 사용자 자격 증명을 정돈된 상태로 유지할 목적으로 사용하는 컨테이너입니다. 앱 간에 자격 증명 풀을 공유할 수 있습니다. 자격 증명 풀을 설정할 때 Amazon Cognito는 Amazon Cognito 사용자에 대한 권한을 정의하는 1개 이상의 IAM 역할(인증된 자격 증명에 대해 1개, 그리고 인증되지 않은 "게스트" 자격 증명을 위해 1개)을 생성합니다.

  3. iOS용 AWS SDK 또는 Android용 AWS SDK를 다운로드해 앱과 통합하고 Amazon Cognito을 사용하는 데 필요한 파일을 가져옵니다.

  4. Amazon Cognito 자격 증명 공급자의 인스턴스를 생성해 자격 증명 풀 ID, AWS 계정 번호 및 자격 증명 풀과 연결한 역할들의 Amazon 리소스 이름(ARN)을 전달합니다. AWS Management Console의 Amazon Cognito 마법사는 샘플 코드를 제공해 시작을 돕습니다.

  5. 앱이 AWS 리소스에 액세스할 때 클라이언트 객체에 자격 증명 공급자 인스턴스를 전달합니다. 이렇게 하면 클라이언트에 임시 보안 자격 증명이 전달됩니다. 자격 증명에 대한 권한은 앞서 정의한 역할 또는 역할들에 기반을 두고 있습니다.

자세한 정보는 다음을 참조하십시오.