기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Facebook을 자격 증명 풀 IdP로 설정
Amazon Cognito 자격 증명 풀은 Facebook과 함께 작동하여 애플리케이션 사용자에게 페더레이션 인증을 제공합니다. 이 섹션에서는 Facebook을 IdP로 사용하여 애플리케이션을 등록하고 설정하는 방법을 설명합니다.
Facebook 설정
Facebook 사용자를 인증하고 Facebook 과 상호 작용하기 전에 Facebook에 애플리케이션을 등록합니다APIs.
Facebook 개발자 포털
참고
Amazon Cognito 자격 증명 풀 페더레이션은 Facebook Limited Login
Facebook 설정
-
Facebook 개발자 포털
에서 Facebook 자격 증명으로 로그인합니다. -
앱 메뉴에서 새 앱 추가를 선택합니다.
-
플랫폼을 선택하고 빠른 시작 프로세스를 완료합니다.
Android
Android 앱을 Facebook 로그인과 통합하는 방법에 대한 자세한 내용은 Facebook Getting Started Guide
iOS - Objective-C
iOS Objective-C 앱을 Facebook 로그인과 통합하는 방법에 대한 자세한 내용은 Facebook Getting Started Guide
iOS - Swift
iOS Swift 앱을 Facebook 로그인과 통합하는 방법에 대한 자세한 내용은 Facebook Getting Started Guide
JavaScript
JavaScript 웹 앱을 Facebook 로그인과 통합하는 방법에 대한 자세한 내용은 Facebook 시작 안내서를 참조하세요
Unity
Unity 앱을 Facebook 로그인과 통합하는 방법에 대한 자세한 내용은 Facebook Getting Started Guide
Xamarin
Facebook 인증을 추가하려면 먼저 아래의 적절한 흐름에 따라 Facebook을 애플리케이션에 통합SDK합니다. Amazon Cognito 자격 증명 풀은 Facebook 액세스 토큰을 사용하여 Amazon Cognito 자격 증명에 연결된 고유한 사용자 식별자를 생성합니다.
Amazon Cognito 자격 증명 풀 콘솔에서 ID 제공업체 구성
다음 절차를 사용하여 ID 제공업체를 구성합니다.
Facebook ID 제공업체(idP)를 추가하려면
-
Amazon Cognito 콘솔
에서 자격 증명 풀을 선택합니다. 자격 증명 풀을 선택합니다. -
사용자 액세스 탭을 선택합니다.
-
ID 제공업체 추가를 선택합니다.
-
Facebook을 선택합니다.
-
Meta for Developers
에서 생성한 OAuth 프로젝트의 앱 ID를 입력합니다. 자세한 내용은 개발자용 Meta 문서의 Facebook 로그인 을 참조하세요. -
Amazon Cognito가 이 공급자를 통해 인증된 사용자에게 보안 인증을 발급할 때 요청하는 역할을 설정하려면 역할 설정을 구성하세요.
-
인증된 역할을 구성할 때 설정한 기본 역할을 이 IdP의 사용자에게 할당하거나 규칙을 사용하여 역할 선택을 선택할 수 있습니다.
-
규칙을 사용하여 역할 선택을 선택한 경우 사용자 인증의 소스 클레임, 클레임 비교 기준으로 사용할 운영자, 이 역할 선택과 일치하도록 하는 값, 역할 할당이 일치할 때 할당할 역할을 입력합니다. 다른 조건에 따라 추가 규칙을 생성하려면 다른 항목 추가를 선택합니다.
-
역할 해결을 선택합니다. 사용자의 클레임이 규칙과 일치하지 않는 경우 보안 인증을 거부하거나 인증된 역할의 보안 인증을 발급할 수 있습니다.
-
-
-
Amazon Cognito가 이 공급자를 통해 인증한 사용자에게 보안 인증을 발급할 때 할당하는 보안 주체 태그를 변경하려면 액세스 제어를 위한 속성을 구성합니다.
-
보안 주체 태그를 적용하지 않으려면 비활성을 선택합니다.
-
sub
및aud
클레임 기반 보안 주체 태그를 적용하려면 기본 매핑 사용을 선택합니다. -
보안 주체 태그에 대한 속성의 자체 사용자 지정 스키마를 생성하려면 사용자 지정 매핑 사용을 선택합니다. 그런 다음 태그에 표시하려는 각 클레임에서 소싱하려는 태그 키를 입력합니다.
-
-
변경 사항 저장(Save changes)을 선택합니다.
Facebook 사용
Android
Facebook 인증을 추가하려면 먼저 Facebook 가이드를
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 가이드를
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
iOS - Swift
Facebook 인증을 추가하려면 먼저 Facebook 가이드를
참고
Amazon Cognito 자격 증명 풀 페더레이션은 Facebook Limited Login
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
JavaScript
Facebook 인증을 추가하려면 Facebook Login for the Web
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 파일
Unity
Facebook 인증을 추가하려면 먼저 Facebook 가이드를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 < LoginResult > () { HandleSuccess = loginResult = > { var accessToken = loginResult.AccessToken; credentials.AddLogin("graph.facebook.com", accessToken.Token); //open new activity }, HandleCancel = () = > { //throw error message }, HandleError = loginError = > { //throw error message } }); LoginManager.Instance.LogInWithReadPermissions(this, new List < string > { "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 } }); }