Login with Amazon(자격 증명 풀) - Amazon Cognito

Login with Amazon(자격 증명 풀)

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

개발자 포털에서 Login with Amazon이 Amazon Cognito와 연동하도록 설정합니다. 자세한 내용은 Login with Amazon FAQ에서 Setting Up Login with Amazon(Login with Amazon 설정)을 참조하세요.

참고

Login with Amazon을 Xamarin 애플리케이션에 통합하려면 Xamarin Getting Started Guide(Xamarin 시작 안내서)를 따릅니다.

참고

Unity 플랫폼에서는 Login with Amazon을 기본적으로 통합할 수 없습니다. 대신 웹 보기를 사용하여 브라우저 로그인 흐름을 수행합니다.

Login with Amazon 설정

Login with Amazon 구현

Amazon 개발자 포털에서 OAuth 애플리케이션을 자격 증명 풀과 통합하도록 설정하고, Login with Amazon 설명서를 찾고, SDK를 다운로드할 수 있습니다. 개발자 콘솔(Developer console)을 선택한 다음 개발자 포털에서 Login with Amazon을 선택합니다. 애플리케이션에 대한 보안 프로필을 생성한 다음 앱에 대한 Login with Amazon 인증 메커니즘을 빌드할 수 있습니다. Login with Amazon 인증을 앱과 통합하는 방법에 대한 자세한 내용은 자격 증명 얻기 섹션을 참조하세요.

Amazon에서는 새 보안 프로필에 대한 OAuth 2.0 클라이언트 ID(client ID)를 발급합니다. 보안 프로필 웹 설정(Web Settings) 탭에서 클라이언트 ID(client ID)를 찾을 수 있습니다. 자격 증명 풀에서 Login with Amazon IdP의 Amazon 앱 ID(Amazon App ID) 필드에 클라이언트 ID(client ID)를 입력합니다.

Amazon Cognito 콘솔에서 외부 공급자 구성

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

  1. Login with Amazon을 외부 공급자로 사용할 자격 증명 풀의 이름을 선택합니다. 자격 증명 풀에 대한 대시보드 페이지가 표시됩니다.

  2. 대시보드 페이지의 우측 상단 모서리에서 자격 증명 풀 편집을 선택합니다. 자격 증명 풀 편집(Edit identity pool) 페이지가 표시됩니다.

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

  4. Amazon 탭을 선택합니다.

  5. 잠금 해제를 선택합니다.

  6. Amazon에서 가져온 Amazon 앱 ID를 입력하고 변경 사항 저장을 선택합니다.

Login with Amazon 사용: Android

Amazon 로그인을 승인한 후 TokenListener 인터페이스의 onSuccess 메서드에서 Amazon Cognito 자격 증명 공급자에 토큰을 전달할 수 있습니다. 코드는 다음과 같습니다.

@Override public void onSuccess(Bundle response) { String token = response.getString(AuthzConstants.BUNDLE_KEY.TOKEN.val); Map<String, String> logins = new HashMap<String, String>(); logins.put("www.amazon.com", token); credentialsProvider.setLogins(logins); }

Login with Amazon 사용: iOS - Objective-C

Amazon 로그인을 승인한 후 AMZNAccessTokenDelegate의 requestDidSucceed 메서드에서 Amazon Cognito 자격 증명 공급자에 토큰을 전달할 수 있습니다.

- (void)requestDidSucceed:(APIResult \*)apiResult { if (apiResult.api == kAPIAuthorizeUser) { [AIMobileLib getAccessTokenForScopes:[NSArray arrayWithObject:@"profile"] withOverrideParams:nil delegate:self]; } else if (apiResult.api == kAPIGetAccessToken) { credentialsProvider.logins = @{ @(AWSCognitoLoginProviderKeyLoginWithAmazon): apiResult.result }; } }}

Login with Amazon 사용: iOS - Swift

Amazon 로그인을 승인한 후 AMZNAccessTokenDelegaterequestDidSucceed 메서드에서 Amazon Cognito 자격 증명 공급자에 토큰을 전달할 수 있습니다.

func requestDidSucceed(apiResult: APIResult!) { if apiResult.api == API.AuthorizeUser { AIMobileLib.getAccessTokenForScopes(["profile"], withOverrideParams: nil, delegate: self) } else if apiResult.api == API.GetAccessToken { credentialsProvider.logins = [AWSCognitoLoginProviderKey.LoginWithAmazon.rawValue: apiResult.result] } }

Login with Amazon 사용: JavaScript

사용자가 Login with Amazon으로 인증하고 다시 웹 사이트로 리디렉션되면 쿼리 문자열에 Login with Amazon 액세스 토큰이 제공됩니다. 이 토큰을 자격 증명 로그인 맵에 전달하세요.

AWS.config.credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId: 'IDENTITY_POOL_ID', Logins: { 'www.amazon.com': 'Amazon Access Token' } });

Login with Amazon 사용: Xamarin

Android용 Xamarin

AmazonAuthorizationManager manager = new AmazonAuthorizationManager(this, Bundle.Empty); var tokenListener = new APIListener { Success = response => { // Get the auth token var token = response.GetString(AuthzConstants.BUNDLE_KEY.Token.Val); credentials.AddLogin("www.amazon.com", token); } }; // Try and get existing login manager.GetToken(new[] { "profile" }, tokenListener);

iOS용 Xamarin

AppDelegate.cs에서 다음을 삽입합니다.

public override bool OpenUrl (UIApplication application, NSUrl url, string sourceApplication, NSObject annotation) { // Pass on the url to the SDK to parse authorization code from the url bool isValidRedirectSignInURL = AIMobileLib.HandleOpenUrl (url, sourceApplication); if(!isValidRedirectSignInURL) return false; // App may also want to handle url return true; }

그런 다음 ViewController.cs에서 다음을 수행합니다.

public override void ViewDidLoad () { base.LoadView (); // Here we create the Amazon Login Button btnLogin = UIButton.FromType (UIButtonType.RoundedRect); btnLogin.Frame = new RectangleF (55, 206, 209, 48); btnLogin.SetTitle ("Login using Amazon", UIControlState.Normal); btnLogin.TouchUpInside += (sender, e) => { AIMobileLib.AuthorizeUser (new [] { "profile"}, new AMZNAuthorizationDelegate ()); }; View.AddSubview (btnLogin); } // Class that handles Authentication Success/Failure public class AMZNAuthorizationDelegate : AIAuthenticationDelegate { public override void RequestDidSucceed(ApiResult apiResult) { // Your code after the user authorizes application for requested scopes var token = apiResult["access_token"]; credentials.AddLogin("www.amazon.com",token); } public override void RequestDidFail(ApiError errorResponse) { // Your code when the authorization fails InvokeOnMainThread(() => new UIAlertView("User Authorization Failed", errorResponse.Error.Message, null, "Ok", null).Show()); } }