Sign in with Apple(자격 증명 풀) - Amazon Cognito

Sign in with Apple(자격 증명 풀)

Amazon Cognito는 Sign in with Apple과 통합되어 모바일 애플리케이션 및 웹 애플리케이션 사용자를 위해 페더레이션 인증을 제공합니다. 이 섹션에서는 Apple로 로그인을 자격 증명 공급자(IdP)로 사용하여 애플리케이션을 등록하고 설정하는 방법을 설명합니다.

Apple로 로그인을 인증 공급자로 자격 증명 풀에 추가하려면 두 단계를 진행해야 합니다. 먼저 애플리케이션에서 Apple로 로그인을 통합한 후 자격 증명 풀에서 Sign in with Apple을 구성합니다.

Sign in with Apple 설정

Apple로 로그인을 IdP로 구성하려면 애플리케이션을 Apple에 등록하여 클라이언트 ID를 받습니다.

  1. Apple에서 개발자 계정을 생성합니다.

  2. Apple 자격 증명으로 로그인합니다.

  3. 왼쪽 탐색 창에서 Certificates, IDs & Profiles(인증서, ID 및 프로필)를 선택합니다.

  4. 왼쪽 탐색 창에서 Identifiers(식별자)를 선택합니다.

  5. 식별자(Identifiers) 페이지에서 +아이콘을 선택합니다.

  6. 새 식별자 등록(Register a New Identifier) 페이지에서 앱 ID(App IDs)를 선택한 다음 계속(Continue)을 선택합니다.

  7. 앱 ID 등록(Register an App ID) 페이지에서 다음을 수행합니다.

    1. 설명에 설명을 입력합니다.

    2. Bundle ID(번들 ID)에서 식별자를 입력합니다. 이 번들 ID(Bundle ID)를 적어 둡니다. Apple을 자격 증명 풀의 공급자로 구성하려면 이 값이 필요합니다.

    3. 기능(Capabilities)에서 Apple로 로그인(Sign In with Apple)을 선택한 다음 편집(Edit)을 선택합니다.

    4. Apple로 로그인: 앱 ID 구성(Sign in with Apple: App ID Configuration) 페이지에서 앱에 적절한 설정을 선택합니다. 그런 다음 저장(Save)을 선택합니다.

    5. 계속(Continue)을 선택합니다.

  8. 앱 ID 확인(Confirm your App ID) 페이지에서 등록(Register)을 선택합니다.

  9. Sign In with Apple을 네이티브 iOS 애플리케이션과 통합하려면 10단계로 이동합니다. 11단계는 Sign in with Apple JS와 통합하려는 애플리케이션을 위한 것입니다.

  10. 식별자(Identifiers) 페이지에서 앱 ID(App IDs) 메뉴를 선택한 다음 서비스 ID(Services IDs)를 선택합니다. + 아이콘을 선택합니다.

  11. 새 식별자 등록(Register a New Identifier) 페이지에서 서비스 ID(Services IDs)를 선택한 다음 계속(Continue)을 선택합니다.

  12. 서비스 ID 등록(Register a Services ID) 페이지에서 다음을 수행합니다.

    1. 설명에 설명을 입력합니다.

    2. Identifier(식별자)에 식별자를 입력합니다. 서비스 ID를 적어 둡니다. Apple을 자격 증명 풀의 공급자로 구성하려면 이 값이 필요합니다.

    3. Sign In with Apple을 선택한 다음 구성을 선택합니다.

    4. 웹 인증 구성(Web Authentication Configuration) 페이지에서 기본 앱 ID(Primary App ID)를 선택합니다. 웹 사이트 URL(Website URLs)에서 + 아이콘을 선택합니다. Domains and Subdomains(도메인 및 하위 도메인)에 앱의 도메인 이름을 입력합니다. 반환 URL(Return URLs)에 Apple로 로그인을 통해 사용자를 인증한 후 권한 부여가 사용자를 리디렉션하는 콜백 URL을 입력합니다.

    5. 다음을 선택합니다.

    6. 계속(Continue), 등록(Register)을 차례로 선택합니다.

  13. 왼쪽 탐색 창에서 를 선택합니다.

  14. 키(Keys) 페이지에 + 아이콘을 선택합니다.

  15. 새 키 등록(Register a New Key) 페이지에서 다음을 수행합니다.

    1. 키 이름에서 키 이름을 입력합니다.

    2. Apple로 로그인(Sign In with Apple)을 선택한 다음 구성(Configure)을 선택합니다.

    3. Configure Key(키 구성) 페이지에서 Primary App ID(기본 앱 ID)를 선택하고 저장을 선택합니다.

    4. 계속(Continue), 등록(Register)을 차례로 선택합니다.

참고

Apple로 로그인을 네이티브 iOS 애플리케이션과 통합하려면 Implementing User Authentication with Sign in with Apple(Apple로 로그인으로 사용자 인증 구현)을 참조하세요.

Apple로 로그인을 네이티브 iOS 이외의 플랫폼에서 통합하려면 Sign in with Apple JS(Apple JS로 로그인)를 참조하세요.

Amazon Cognito 페더레이션 자격 증명 콘솔에서 외부 공급자 구성

다음 절차를 사용하여 외부 공급자를 구성합니다.

  1. Amazon Cognito 콘솔 홈 페이지에서 자격 증명 풀 관리(Manage Identity Pools)를 선택합니다.

  2. Apple을 외부 공급자로 사용할 자격 증명 풀의 이름을 선택합니다.

  3. 대시보드의 우측 상단 모서리에서 자격 증명 풀 편집을 선택합니다.

  4. 아래로 스크롤하고 인증 공급자(Authentication providers)를 선택하여 섹션을 확장합니다.

  5. Apple 탭을 선택합니다.

  6. https://developer.apple.com에서 받은 번들 ID를 입력합니다. 변경 사항 저장을 선택합니다.

  7. 네이티브 iOS 애플리케이션에서 Sign in with Apple을 사용하는 경우 developer.apple.com에서 받은 BundleID를 입력합니다. 또는 웹 또는 다른 애플리케이션에서 Apple로 로그인을 사용하는 경우 서비스 ID를 입력합니다. 변경 사항 저장을 선택합니다.

Amazon Cognito 페더레이션 자격 증명 CLI에서 Apple을 공급자로 사용하여 로그인 예제

이 예에서는 Apple로 로그인을 IdP로 사용하여 MyIdentityPool이라는 자격 증명 풀을 생성합니다.

aws cognito-identity create-identity-pool --identity-pool-name MyIdentityPool --supported-login-providers appleid.apple.com="sameple.apple.clientid"

자세한 내용은 자격 증명 풀 생성 섹션을 참조하세요.

Amazon Cognito 자격 증명 ID 생성

이 예에서는 Amazon Cognito ID를 생성(또는 검색)합니다. 이는 퍼블릭 API이므로 이 API를 호출하는 데 자격 증명이 필요하지 않습니다.

aws cognito-identity get-id --identity-pool-id SampleIdentityPoolId --logins appleid.apple.com="SignInWithAppleIdToken"

자세한 내용은 get-id 섹션을 참조하세요.

Amazon Cognito 자격 증명 ID의 자격 증명 가져오기

이 예제에서는 제공된 자격 증명 ID 및 Sign in with Apple 로그인의 자격 증명을 반환합니다. 이는 퍼블릭 API이므로 이 API를 호출하는 데 자격 증명이 필요하지 않습니다.

aws cognito-identity get-credentials-for-identity --identity-id SampleIdentityId --logins appleid.apple.com="SignInWithAppleIdToken"

자세한 내용은 get-credentials-for-identity 섹션을 참조하세요.

Sign in with Apple 사용: Android

Apple은 Android용 Sign in with Apple을 지원하는 SDK를 제공하지 않습니다. 대신 웹 보기에서 웹 흐름을 사용할 수 있습니다.

세션 객체를 사용하여 Apple로 로그인하여 상태를 추적합니다. Amazon Cognito은 이 세션 객체의 ID 토큰을 사용하여 사용자를 인증하고, 고유 식별자를 생성하며, 필요한 경우 사용자에게 다른 AWS 리소스에 대한 액세스 권한을 부여합니다.

@Override public void onSuccess(Bundle response) { String token = response.getString("id_token"); Map<String, String> logins = new HashMap<String, String>(); logins.put("appleid.apple.com", token); credentialsProvider.setLogins(logins); }

Sign in with Apple 사용: iOS - Objective-C

Apple은 네이티브 iOS 애플리케이션에서 Sign in with Apple에 대한 SDK 지원을 제공했습니다. 네이티브 iOS 디바이스에서 Apple로 로그인으로 사용자 인증을 구현하려면 Apple 설명서에서 Implementing User Authentication with Sign in with Apple(Apple로 로그인으로 사용자 인증 구현)을 따르세요.

Amazon Cognito은 ID 토큰을 사용하여 사용자를 인증하고, 고유 식별자를 생성하며, 필요한 경우 사용자에게 다른 AWS 리소스에 대한 액세스 권한을 부여합니다.

(void)finishedWithAuth: (ASAuthorizationAppleIDCredential *)auth error: (NSError *) error { NSString *idToken = [ASAuthorizationAppleIDCredential objectForKey:@"identityToken"]; credentialsProvider.logins = @{ "appleid.apple.com": idToken }; }

Sign in with Apple 사용: iOS - Swift

Apple은 네이티브 iOS 애플리케이션에서 Sign in with Apple에 대한 SDK 지원을 제공했습니다. 네이티브 iOS 디바이스에서 Apple로 로그인으로 사용자 인증을 구현하려면 Apple 설명서에서 Implementing User Authentication with Sign in with Apple(Apple로 로그인으로 사용자 인증 구현)을 따르세요.

Amazon Cognito은 ID 토큰을 사용하여 사용자를 인증하고, 고유 식별자를 생성하며, 필요한 경우 사용자에게 다른 AWS 리소스에 대한 액세스 권한을 부여합니다.

iOS에서 Apple로 로그인 설정에 대한 자세한 내용은 Set up Sign in with Apple(Apple로 로그인 설정)을 참조하세요.

func finishedWithAuth(auth: ASAuthorizationAppleIDCredential!, error: NSError!) { if error != nil { print(error.localizedDescription) } else { let idToken = auth.identityToken, credentialsProvider.logins = ["appleid.apple.com": idToken!] } }

Sign in with Apple 사용: JavaScript

Apple은 JavaScript용 Sign in with Apple을 지원하는 SDK를 제공하지 않습니다. 대신 웹 보기에서 웹 흐름을 사용할 수 있습니다.

세션 객체를 사용하여 Apple로 로그인하여 상태를 추적합니다. Amazon Cognito은 이 세션 객체의 ID 토큰을 사용하여 사용자를 인증하고, 고유 식별자를 생성하며, 필요한 경우 사용자에게 다른 AWS 리소스에 대한 액세스 권한을 부여합니다.

function signinCallback(authResult) { // Add the apple's id token to the Amazon Cognito credentials login map. AWS.config.credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId: 'IDENTITY_POOL_ID', Logins: { 'appleid.apple.com': authResult['id_token'] } }); // Obtain AWS credentials AWS.config.credentials.get(function(){ // Access AWS resources here. }); }

Sign in with Apple 사용: Xamarin

Xamarin용 Sign in with Apple을 지원하는 SDK는 없습니다. 대신 웹 보기에서 웹 흐름을 사용할 수 있습니다.

세션 객체를 사용하여 Apple로 로그인하여 상태를 추적합니다. Amazon Cognito은 이 세션 객체의 ID 토큰을 사용하여 사용자를 인증하고, 고유 식별자를 생성하며, 필요한 경우 사용자에게 다른 AWS 리소스에 대한 액세스 권한을 부여합니다.

토큰을 받으면 CognitoAWSCredentials에서 토큰을 설정할 수 있습니다.

credentials.AddLogin("appleid.apple.com", token);