AWS Cognito UserPool 및 Identity를 사용한 iOS 앱 인증
UserPool에서 사용자 인증을 수행하고 UserPool을 인증 공급자로 Cognito Identity에서 Credential을 얻는 흐름입니다.
UserPool 덕분에 인증 서버조차도 구현할 필요가 없어지고 점점 서버리스 개발이 가능해지고 있습니다.
참고로 한 사이트
UserPool에 대해서는 아직 그다지 기사도 많지 않고, AWS 공식 문서가 의지였습니다.
언어는 Objective-C이지만 awslabs 샘플은 매우 유용합니다.
앱 실행 방법
1.UserPool 만들기
미국 동부 지역(us-east-1)에서 UserPool을 만듭니다. 요전날 도쿄 리전(ap-northeast-1)도 이용 가능하게 되었습니다만, SDK의 버그? 그래도 잘 작동하지 않았습니다.
AWS SDK 버전 2.4.5까지는 미국 동부 리전(us-east-1)이 하드 코드되어 있었던 것 같아서 도쿄 리전(ap-northeast-1)에서는 동작하지 않았지만 2.4.7로 업데이트 그런 다음 작동합니다.
관련 Issue는 다음과 같습니다.
htps : // 기주 b. 코 m / 아 ws / 아 ws-sdk 이오 s / 이스에 s / 447
2.IdentityPool 만들기
이곳은 도쿄 리전에서 작성합니다.
3.UserPool, IdentityPool의 정보를 앱에 작성
Constants.swift
에 필요한 정수를 정리하고 있습니다. 여기에 정보를 기술하면 앱이 실행할 수 있게 되어 있습니다.static let COGNITO_IDENTITY_USER_POOL_ID = "YOUR_USER_POOL_ID"
static let COGNITO_IDENTITY_USER_POOL_APP_CLIENT_ID = "YOUR_USER_POOL_APP_CLIENT_ID"
static let COGNITO_IDENTITY_USER_POOL_APP_CLIENT_SECRET = "YOUR_USER_POOL_APP_CLIENT_SECRET"
static let COGNITO_IDENTITY_USER_POOL_KEY = "CognitoUserPool"
static let COGNITO_IDENTITY_POOL_ID = "YOUR_IDENTITY_POOL_ID"
4. 종속 라이브러리 설치
pod 명령으로 설치합시다.
$ pod install
코드 해설
간단하게 포인트만, 순서를 따라 설명합니다.
덧붙여서 로그인 기능 밖에 없기 때문에 사전에 UserPool에 유저를 작성해 둘 필요가 있습니다. .
WelcomeViewController
본 앱의 메인 화면입니다.
refresh
메소드가 UserPool과 통신을 시도하고 있으며 여기에서 사용자가 인증되지 않은 경우 로그인 화면이 표시됩니다.로그인이 완료되면 Welcome Username이라는 메시지가 표시됩니다.
AppDelegate
AWSCognitoIdentityInteractiveAuthenticationDelegate
프로토콜을 적용하고 startPasswordAuthentication
메서드를 구현합니다.startPasswordAuthentication
메서드는 사용자가 인증되지 않은 경우 호출되며 LoginViewController
를 시작합니다.LoginViewController
AWSCognitoIdentityPasswordAuthentication
프로토콜을 적용하고 getPasswordAuthenticationDetails:passwordAuthenticationCompletionSource:
및 didCompletePasswordAuthenticationStepWithError:
메서드를 구현합니다.getPasswordAuthenticationDetails:passwordAuthenticationCompletionSource:
메소드에서는 passwordAuthenticationCompletionSource
를 받을 수 있습니다. 이 오브젝트에는 UserPool과 통신하여 로그인하는 태스크가 들어 있습니다.이 타이밍에 로그인 화면이 표시되고 로그인 버튼을 클릭하면
loginTapped:
메소드가 실행됩니다. 이 중 self.passwordAuthenticationCompletion?.setResult(result)
로 로그인 작업을 실행합니다. result
에는 로그인 화면에서 얻은 사용자 이름과 암호가 들어 있습니다.로그인이 완료되면
didCompletePasswordAuthenticationStepWithError:
메소드가 실행됩니다. 여기에서는 로그인 태스크가 에러이면 경고를 표시하고, 로그인 성공하면 로그인 화면을 닫는다는 처리를 합니다.마지막으로 WelcomeViewController로 돌아가서 로그인 한 사용자의 이름으로 Welcome Username이라는 메시지가 표시됩니다.
AwsClientManager
Cognito 주위의 처리는 이 싱글톤 클래스에 갇혀 있습니다.
조금이라도 여러분의 도움이 되면 다행입니다^^
Reference
이 문제에 관하여(AWS Cognito UserPool 및 Identity를 사용한 iOS 앱 인증), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/takehilo/items/33bef4bd2c92b9b1d496텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)