Facebook을 자격 증명 풀 IdP로 설정 - Amazon Cognito

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

Facebook을 자격 증명 풀 IdP로 설정

Amazon Cognito 자격 증명 풀은 Facebook과 함께 작동하여 애플리케이션 사용자에게 페더레이션 인증을 제공합니다. 이 섹션에서는 Facebook을 IdP로 사용하여 애플리케이션을 등록하고 설정하는 방법을 설명합니다.

Facebook 설정

Facebook 사용자를 인증하고 Facebook 과 상호 작용하기 전에 Facebook에 애플리케이션을 등록합니다APIs.

Facebook 개발자 포털을 통해 애플리케이이션을 설정할 수 있습니다. Amazon Cognito 자격 증명 풀에 Facebook을 통합하기 전에 이 절차를 수행합니다.

참고

Amazon Cognito 자격 증명 풀 페더레이션은 Facebook Limited Login 과 호환되지 않습니다. 제한된 로그인에 설정된 권한을 초과하지 않고 iOS용 Facebook 로그인을 설정하는 방법에 대한 자세한 내용은 iOS용 Facebook 로그인 - 개발자용 Meta에서 빠른 시작을 참조하세요.

Facebook 설정
  1. Facebook 개발자 포털에서 Facebook 자격 증명으로 로그인합니다.

  2. 메뉴에서 새 앱 추가를 선택합니다.

  3. 플랫폼을 선택하고 빠른 시작 프로세스를 완료합니다.

Android

Android 앱을 Facebook 로그인과 통합하는 방법에 대한 자세한 내용은 Facebook Getting Started Guide(Facebook 시작 안내서)를 참조하세요.

iOS - Objective-C

iOS Objective-C 앱을 Facebook 로그인과 통합하는 방법에 대한 자세한 내용은 Facebook Getting Started Guide(Facebook 시작 안내서)를 참조하세요.

iOS - Swift

iOS Swift 앱을 Facebook 로그인과 통합하는 방법에 대한 자세한 내용은 Facebook Getting Started Guide(Facebook 시작 안내서)를 참조하세요.

JavaScript

JavaScript 웹 앱을 Facebook 로그인과 통합하는 방법에 대한 자세한 내용은 Facebook 시작 안내서를 참조하세요.

Unity

Unity 앱을 Facebook 로그인과 통합하는 방법에 대한 자세한 내용은 Facebook Getting Started Guide(Facebook 시작 안내서)를 참조하세요.

Xamarin

Facebook 인증을 추가하려면 먼저 아래의 적절한 흐름에 따라 Facebook을 애플리케이션에 통합SDK합니다. Amazon Cognito 자격 증명 풀은 Facebook 액세스 토큰을 사용하여 Amazon Cognito 자격 증명에 연결된 고유한 사용자 식별자를 생성합니다.

Amazon Cognito 자격 증명 풀 콘솔에서 ID 제공업체 구성

다음 절차를 사용하여 ID 제공업체를 구성합니다.

Facebook ID 제공업체(idP)를 추가하려면
  1. Amazon Cognito 콘솔에서 자격 증명 풀을 선택합니다. 자격 증명 풀을 선택합니다.

  2. 사용자 액세스 탭을 선택합니다.

  3. ID 제공업체 추가를 선택합니다.

  4. Facebook을 선택합니다.

  5. Meta for Developers 에서 생성한 OAuth 프로젝트의 앱 ID를 입력합니다. 자세한 내용은 개발자용 Meta 문서의 Facebook 로그인을 참조하세요.

  6. Amazon Cognito가 이 공급자를 통해 인증된 사용자에게 보안 인증을 발급할 때 요청하는 역할을 설정하려면 역할 설정을 구성하세요.

    1. 인증된 역할을 구성할 때 설정한 기본 역할을 이 IdP의 사용자에게 할당하거나 규칙을 사용하여 역할 선택을 선택할 수 있습니다.

      1. 규칙을 사용하여 역할 선택을 선택한 경우 사용자 인증의 소스 클레임, 클레임 비교 기준으로 사용할 운영자, 이 역할 선택과 일치하도록 하는 , 역할 할당이 일치할 때 할당할 역할을 입력합니다. 다른 조건에 따라 추가 규칙을 생성하려면 다른 항목 추가를 선택합니다.

      2. 역할 해결을 선택합니다. 사용자의 클레임이 규칙과 일치하지 않는 경우 보안 인증을 거부하거나 인증된 역할의 보안 인증을 발급할 수 있습니다.

  7. Amazon Cognito가 이 공급자를 통해 인증한 사용자에게 보안 인증을 발급할 때 할당하는 보안 주체 태그를 변경하려면 액세스 제어를 위한 속성을 구성합니다.

    1. 보안 주체 태그를 적용하지 않으려면 비활성을 선택합니다.

    2. sub 및 aud 클레임 기반 보안 주체 태그를 적용하려면 기본 매핑 사용을 선택합니다.

    3. 보안 주체 태그에 대한 속성의 자체 사용자 지정 스키마를 생성하려면 사용자 지정 매핑 사용을 선택합니다. 그런 다음 태그에 표시하려는 각 클레임에서 소싱하려는 태그 키를 입력합니다.

  8. 변경 사항 저장(Save changes)을 선택합니다.

Facebook 사용

Android

Facebook 인증을 추가하려면 먼저 Facebook 가이드를 따르고 Facebook을 애플리케이션에 통합SDK합니다. 그런 다음 Facebook으로 로그인(Login with Facebook) 버튼을 Android 사용자 인터페이스에 추가합니다. Facebook은 세션 객체를 SDK 사용하여 상태를 추적합니다. Amazon Cognito는 이 세션 객체의 액세스 토큰을 사용하여 사용자를 인증하고, 고유 식별자를 생성하고, 필요한 경우 사용자에게 다른 AWS 리소스에 대한 액세스 권한을 부여합니다.

Facebook 로 사용자를 인증한 후 Amazon Cognito 자격 증명 공급자에 세션 토큰을 SDK추가합니다.

Facebook SDK 4.0 이상:

Map<String, String> logins = new HashMap<String, String>(); logins.put("graph.facebook.com", AccessToken.getCurrentAccessToken().getToken()); credentialsProvider.setLogins(logins);

Facebook 4.0 SDK 이전:

Map<String, String> logins = new HashMap<String, String>(); logins.put("graph.facebook.com", Session.getActiveSession().getAccessToken()); credentialsProvider.setLogins(logins);

Facebook 로그인 프로세스는 에서 단일 톤 세션을 초기화합니다SDK. Facebook 세션 객체에는 Amazon Cognito가 인증된 최종 사용자의 AWS 자격 증명을 생성하는 데 사용하는 OAuth 토큰이 포함되어 있습니다. 또한 Amazon Cognito는 사용자 데이터베이스에 이 특정 Facebook 자격 증명과 일치하는 사용자가 있는지 확인하는 데에도 이 토큰을 사용합니다. 사용자가 이미 있는 경우 는 기존 식별자를 API 반환합니다. 그렇지 않으면 가 새 식별자를 API 반환합니다. 클라이언트는 로컬 디바이스에 식별자를 SDK 자동으로 캐싱합니다.

참고

로그인 맵을 설정한 후 refresh 또는 에 전화를 걸어 AWS 보안 인증 정보를 get 검색합니다.

iOS - Objective-C

Facebook 인증을 추가하려면 먼저 Facebook 가이드를 따르고 Facebook을 애플리케이션에 통합SDK합니다. 그런 다음 Facebook으로 로그인 버튼을 귀하의 사용자 인터페이스에 추가합니다. Facebook은 세션 객체를 SDK 사용하여 상태를 추적합니다. Amazon Cognito는 이 세션 객체의 액세스 토큰을 사용하여 사용자를 인증하고 고유한 Amazon Cognito 자격 증명 풀(페더레이션 자격 증명)에 바인딩합니다.

Amazon Cognito에 Facebook 액세스 토큰을 제공하려면 AWSIdentityProviderManager 프로토콜.

logins 메서드를 구현할 때 AWSIdentityProviderFacebook이 포함된 사전을 반환합니다. 다음 코드 예와 같이 이 사전은 키 역할을 하고 인증된 Facebook 사용자에게서 받은 현재 액세스 토큰은 값 역할을 합니다.

- (AWSTask<NSDictionary<NSString *, NSString *> *> *)logins { FBSDKAccessToken* fbToken = [FBSDKAccessToken currentAccessToken]; if(fbToken){ NSString *token = fbToken.tokenString; return [AWSTask taskWithResult: @{ AWSIdentityProviderFacebook : token }]; }else{ return [AWSTask taskWithError:[NSError errorWithDomain:@"Facebook Login" code:-1 userInfo:@{@"error":@"No current Facebook access token"}]]; } }

AWSCognitoCredentialsProvider를 인스턴스화할 때 생성자에서 AWSIdentityProviderManager의 값으로 identityProviderManager를 구현하는 클래스를 전달하십시오. 자세한 내용은 AWSCognitoCredentialsProvider 참조 페이지로 이동하여 initWithRegion유형:identityPoolId:identityProviderManager을 선택합니다.

iOS - Swift

Facebook 인증을 추가하려면 먼저 Facebook 가이드를 따르고 Facebook을 애플리케이션에 통합SDK합니다. 그런 다음 Facebook으로 로그인 버튼을 귀하의 사용자 인터페이스에 추가합니다. Facebook은 세션 객체를 SDK 사용하여 상태를 추적합니다. Amazon Cognito는 이 세션 객체의 액세스 토큰을 사용하여 사용자를 인증하고 고유한 Amazon Cognito 자격 증명 풀(페더레이션 자격 증명)에 바인딩합니다.

참고

Amazon Cognito 자격 증명 풀 페더레이션은 Facebook Limited Login 과 호환되지 않습니다. 제한된 로그인에 설정된 권한을 초과하지 않고 iOS용 Facebook 로그인을 설정하는 방법에 대한 자세한 내용은 iOS용 Facebook 로그인 - 개발자용 Meta에서 빠른 시작을 참조하세요.

Amazon Cognito에 Facebook 액세스 토큰을 제공하려면 AWSIdentityProviderManager 프로토콜.

logins 메서드를 구현할 때 AWSIdentityProviderFacebook이 포함된 사전을 반환합니다. 다음 코드 예와 같이 이 사전은 키 역할을 하고 인증된 Facebook 사용자에게서 받은 현재 액세스 토큰은 값 역할을 합니다.

class FacebookProvider: NSObject, AWSIdentityProviderManager { func logins() -> AWSTask<NSDictionary> { if let token = AccessToken.current?.authenticationToken { return AWSTask(result: [AWSIdentityProviderFacebook:token]) } return AWSTask(error:NSError(domain: "Facebook Login", code: -1 , userInfo: ["Facebook" : "No current Facebook access token"])) } }

AWSCognitoCredentialsProvider를 인스턴스화할 때 생성자에서 AWSIdentityProviderManager의 값으로 identityProviderManager를 구현하는 클래스를 전달하십시오. 자세한 내용은 를 참조하세요. AWSCognitoCredentialsProvider 참조 페이지에서 initWithRegionType:identityPoolId:identityProviderManager를 선택합니다.

JavaScript

Facebook 인증을 추가하려면 Facebook Login for the Web(웹용 Facebook 로그인)에 따라 웹 사이트에 Facebook으로 로그인(Login with Facebook) 버튼을 추가합니다. Facebook은 세션 객체를 SDK 사용하여 상태를 추적합니다. Amazon Cognito는 이 세션 객체의 액세스 토큰을 사용하여 사용자를 인증하고, 고유 식별자를 생성하고, 필요한 경우 사용자에게 다른 AWS 리소스에 대한 액세스 권한을 부여합니다.

Facebook 로 사용자를 인증한 후 Amazon Cognito 자격 증명 공급자에 세션 토큰을 SDK추가합니다.

FB.login(function (response) { // Check if the user logged in successfully. if (response.authResponse) { console.log('You are now logged in.'); // Add the Facebook access token to the Amazon Cognito credentials login map. AWS.config.credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId: 'IDENTITY_POOL_ID', Logins: { 'graph.facebook.com': response.authResponse.accessToken } }); // Obtain AWS credentials AWS.config.credentials.get(function(){ // Access AWS resources here. }); } else { console.log('There was a problem logging you in.'); } });

Facebook은 Amazon Cognito가 인증된 최종 사용자의 AWS 자격 증명을 생성하는 데 사용하는 OAuth 토큰을 SDK 가져옵니다. 또한 Amazon Cognito는 사용자 데이터베이스에 이 Facebook 자격 증명과 일치하는 사용자가 있는지 확인하는 데에도 이 토큰을 사용합니다. 사용자가 이미 있는 경우 는 기존 식별자를 API 반환합니다. 그렇지 않으면 새 식별자가 반환됩니다. 식별자는 클라이언트가 로컬 디바이스SDK에 자동으로 캐시됩니다.

참고

로그인 맵을 설정한 후 refresh 또는 get을 호출하여 자격 증명을 가져옵니다. 코드 예제는 JavaScript README 파일 의 “사용 사례 17, 사용자 풀과 Cognito 자격 증명 통합”을 참조하세요.

Unity

Facebook 인증을 추가하려면 먼저 Facebook 가이드를 따르고 Facebook을 애플리케이션에 통합SDK합니다. Amazon Cognito는 FB 객체의 Facebook 액세스 토큰을 사용하여 Amazon Cognito 자격 증명에 연결된 고유한 사용자 식별자를 생성합니다.

Facebook 로 사용자를 인증한 후 Amazon Cognito 보안 인증 제공업체에 세션 토큰을 SDK추가합니다.

void Start() { FB.Init(delegate() { if (FB.IsLoggedIn) { //User already logged in from a previous session AddFacebookTokenToCognito(); } else { FB.Login ("email", FacebookLoginCallback); } }); } void FacebookLoginCallback(FBResult result) { if (FB.IsLoggedIn) { AddFacebookTokenToCognito(); } else { Debug.Log("FB Login error"); } } void AddFacebookTokenToCognito() { credentials.AddLogin ("graph.facebook.com", AccessToken.CurrentAccessToken.TokenString); }

FB.AccessToken을 사용하기 전에 FB.Login()을 호출하고 FB.IsLoggedIn이 true인지 확인합니다.

Xamarin

Android용 Xamarin:

public void InitializeFacebook() { FacebookSdk.SdkInitialize(this.ApplicationContext); callbackManager = CallbackManagerFactory.Create(); LoginManager.Instance.RegisterCallback(callbackManager, new FacebookCallback &lt; LoginResult &gt; () { HandleSuccess = loginResult = &gt; { var accessToken = loginResult.AccessToken; credentials.AddLogin("graph.facebook.com", accessToken.Token); //open new activity }, HandleCancel = () = &gt; { //throw error message }, HandleError = loginError = &gt; { //throw error message } }); LoginManager.Instance.LogInWithReadPermissions(this, new List &lt; string &gt; { "public_profile" }); }

iOS용 Xamarin:

public void InitializeFacebook() { LoginManager login = new LoginManager(); login.LogInWithReadPermissions(readPermissions.ToArray(), delegate(LoginManagerLoginResult result, NSError error) { if (error != null) { //throw error message } else if (result.IsCancelled) { //throw error message } else { var accessToken = loginResult.AccessToken; credentials.AddLogin("graph.facebook.com", accessToken.Token); //open new view controller } }); }