모바일 앱을 위한 웹 자격 증명 연동 API 작업 사용 - AWS Identity and Access Management

모바일 앱을 위한 웹 자격 증명 연동 API 작업 사용

최상의 결과를 얻으려면 거의 모든 웹 자격 증명 연동 시나리오에 대해 Amazon Cognito를 자격 증명 브로커로 사용하십시오. Amazon Cognito는 사용하기 쉽고 익명의(인증되지 않은) 액세스, 디바이스 및 공급자 전반에 걸친 사용자 데이터 동기화와 같은 부가적인 기능을 제공합니다. 그러나 AssumeRoleWithWebIdentity API를 수동 호출함으로써 웹 자격 증명 연동을 사용하는 앱을 이미 생성했다면, 그 앱을 계속해서 사용할 수 있고 앱은 여전히 잘 작동될 것입니다.

참고

웹 자격 증명 연동이 어떤 방식으로 작동하는지에 대한 이해를 돕는 Web Identity Federation Playground를 이용할 수 있습니다. 이 대화형 웹 사이트는 Login with Amazon, Facebook 또는 Google을 통해 인증하고 임시 보안 자격 증명을 얻은 다음, 이러한 자격 증명을 사용하여 AWS에 요청하는 과정을 안내합니다.

Amazon Cognito 없이 웹 자격 증명 연동을 사용하는 과정은 대체로 다음과 같은 개요를 따릅니다.

  1. 외부 자격 증명 공급자(IdP)에서 개발자로 로그인하여 앱을 위한 고유 ID를 부여하는 IdP에서 앱을 구성합니다. (서로 다른 공급자는 이 과정에 대해 서로 다른 용어를 사용합니다. 이 개요는 앱을 IdP와 동일시하는 과정에 대해 구성이라는 용어를 사용합니다). 각 IdP는 IdP 고유의 앱 ID를 제공함으로써, 동일한 앱을 다수의 IdP로 구성하는 경우 앱은 여러 개의 앱 ID를 갖게 됩니다. 각 공급자로 여러 개의 앱을 구성할 수 있습니다.

    다음 외부 링크는 흔히 사용되는 자격 증명 공급자(IdP) 중 일부를 사용하는 것에 대한 정보를 제공합니다.

    중요

    Google, Facebook 또는 Amazon Cognito에서 OIDC 자격 증명 공급자를 사용하는 경우 AWS Management Console에서 별도의 IAM 자격 증명 공급자를 생성하지 마세요. 이러한 OIDC 자격 증명 공급자는 이미 AWS에 내장되어 있으며 사용할 수 있습니다. 다음 단계를 건너뛰고 자격 증명 공급자를 사용하여 새 역할 생성으로 바로 이동합니다.

  2. Google, Facebook 이외의 IdP를 사용하거나 OIDC와 호환되는 Amazon Cognito을(를) 사용하는 경우 IAM 자격 증명 공급자 엔터티를 생성합니다.

  3. IAM에서 하나 이상의 역할을 생성합니다. 각 역할에 대해 그 역할을 위임할 대상(신뢰 정책)과 앱 사용자들이 가져야 할 권한(권한 정책)을 정의할 수 있습니다. 일반적으로 앱이 지원하는 각 IdP마다 하나의 역할을 생성합니다. 예를 들면 사용자가 Login with Amazon을 통해 로그인할 때 앱이 위임할 수 있는 역할, 사용자가 Facebook을 통해 로그인한 동일 앱에 대한 두 번째 역할 및 사용자가 Google을 통해 로그인하는 앱에 대한 세 번째 역할을 생성할 수 있습니다. 신뢰 관계를 위해서는 IdP(예: Amazon.com)를 Principal(신뢰받는 개체)로 지정하고 앱 ID에 할당된 IdP와 일치하는 Condition을 포함시키십시오. 여러 공급자에 대한 역할의 예는 서드 파티 자격 증명 공급자의 역할 만들기(연동)에 있습니다.

  4. 애플리케이션에서 IdP로 사용자를 인증하십시오. 이렇게 하는 방법에 대한 세부 사항은 사용 중인 IdP(Login with Amazon, Facebook 또는 Google)와 앱이 실행되는 플랫폼에 따라 달라집니다. 예를 들어 Android 앱의 인증 방법은 iOS 앱 또는 JavaScript 기반 웹 앱과 다를 수 있습니다.

    일반적으로 사용자가 아직 로그인하지 않은 경우 IdP가 로그인 페이지 표시를 처리합니다. IdP가 사용자를 인증한 후에 IdP는 사용자에 대한 정보가 담긴 인증 토큰을 앱에 반환합니다. 포함된 정보의 내용은 IdP가 노출하는 것과 사용자가 공유하고자 하는 정보가 무엇인지에 달려 있습니다. 앱에서 이 정보를 사용할 수 있습니다.

  5. 앱에서 AssumeRoleWithWebIdentity 작업을 서명 없이 호출하여 임시 보안 자격 증명을 요청할 수 있습니다. 요청 시 IdP의 인증 토큰을 전달하고 해당 IdP에 대해 생성한 IAM 역할의 Amazon 리소스 이름(ARN)을 지정합니다. AWS는 그 토큰이 신뢰할 수 있고 유효한지 확인하여, 그럴 경우에는 요청 시 이름을 지정하는 역할에 대한 권한을 지닌 앱에 임시 보안 자격 증명을 반환합니다. 그 응답에는 IdP가 사용자에게 연결하는 고유 사용자 ID와 같은, IdP에서 오는 사용자에 대한 메타데이터도 포함되어 있습니다.

  6. AssumeRoleWithWebIdentity 응답의 임시 보안 자격 증명을 사용하여 앱에서 AWS API 작업에 대한 서명된 요청을 생성합니다. IdP에서 받은 사용자 ID 정보는 앱의 사용자를 구별할 수 있습니다. 예를 들어 사용자 ID를 접두사 또는 접미사로 포함하는 Amazon S3 폴더에 객체를 넣을 수 있습니다. 이렇게 함으로써 폴더를 잠그는 액세스 제어 정책을 생성해 그 ID를 지닌 사용자만 그 폴더에 액세스할 수 있게 됩니다. 자세한 정보는 이 주제의 후반부에서 웹 자격 증명 연동을 사용하여 사용자 식별 단원을 참조하십시오.

  7. 앱은 AWS에 요청할 필요가 있을 때마다 새 임시 보안 자격 증명을 받지 않아도 되도록 임시 보안 자격 증명을 캐시해야 합니다. 기본적으로 자격 증명은 1시간 동안 유효합니다. 자격 증명이 만료되면(또는 그 전에) AssumeRoleWithWebIdentity에 또 한 번 호출을 하여 새로운 임시 보안 자격 증명 집합을 얻으십시오. IdP의 토큰 역시 보통 설정된 시간이 지나면 만료되기 때문에, IdP 및 IdP가 토큰을 어떻게 관리하느냐에 따라 AssumeRoleWithWebIdentity에 새로운 호출을 하기 전에 IdP의 토큰을 갱신해야 할 수도 있습니다. iOS를 위한 AWS SDK 또는 Android를 위한 AWS SDK를 사용하는 경우 AmazonSTSCredentialsProvider 작업을 사용해 IAM 임시 자격 증명을 필요에 따라 갱신하는 등 관리할 수 있습니다.