40
빠른 인증 서비스 구현을 위한 Amazon Cognito 서비스 소개 윤석찬 아마존웹서비스코리아, 테크에반젤리스트 @channyun

빠른 모바일 인증 구현을 위한 Amazon Cognito 서비스 소개 :: 윤석찬 - AWS Monthly Webinar

Embed Size (px)

Citation preview

Page 1: 빠른 모바일 인증 구현을 위한 Amazon Cognito 서비스 소개 :: 윤석찬 - AWS Monthly Webinar

빠른 인증 서비스 구현을 위한

Amazon Cognito 서비스 소개

윤석찬아마존웹서비스코리아, 테크에반젤리스트

@channyun

Page 2: 빠른 모바일 인증 구현을 위한 Amazon Cognito 서비스 소개 :: 윤석찬 - AWS Monthly Webinar

v

모바일 개발자 가라사대…

직면한 문제점

플랫폼 파편화확장성 높은 동기화의 어려움앱 관리 및 운영 비용 증가핵심 UX 만드는데도 시간 증가사용자에게 줄 핵심 기능 구현 시간 저하

앱개발은 만만한 작업이 아니다!

모바일 앱 코드사용자 인증 및 관리사용자 데이터 싱크

비동기 커뮤니케이션활성 디바이스 분석

사용자 행태 분석사용자 참여 분석

푸시 노티피케이션사용자 이벤트 기능처리

플랫폼 독립적 모바일 백엔드데이터 유효성 및 전송

파일 및 미디어 저장공유 데이터베이스 스토리지

데이터 수집기타등등…

Page 3: 빠른 모바일 인증 구현을 위한 Amazon Cognito 서비스 소개 :: 윤석찬 - AWS Monthly Webinar

v

AWS 가라사대…모바일 앱 코드

사용자 인증 및 관리사용자 데이터 싱크

비동기 커뮤니케이션디바이스 대응

푸시 노티피케이션사용자 이벤트 기능처리

플랫폼 독립적 모바일 백엔드데이터 유효성 및 전송

파일 및 미디어 저장공유 데이터베이스 스토리지

데이터 수집기타등등…

Amazon Mobile Analytics

Amazon SNS Mobile Push

AWS Lambda

Mobile-optimized Connectors(Amazon Kinesis, Amazon S3, Amazon DynamoDB, Amazon SQS)

Amazon Cognito

Page 4: 빠른 모바일 인증 구현을 위한 Amazon Cognito 서비스 소개 :: 윤석찬 - AWS Monthly Webinar

v

AWS 가라사대…모바일 앱 관리

서버 없는 모바일 백엔드API 개발 및 인증 관리

SDK 생성 및 개발자 지원앱 자동 테스트품질 관리 향상

다양한 디바이스 대응AWS Device Farm

Amazon API Gateway

모바일 앱 개발모바일 백엔드를 한번에 구성

모바일 샘플 앱 코드 제공모바일 서비스 통합 및 선택 연동

AWS MobileHub

Page 5: 빠른 모바일 인증 구현을 위한 Amazon Cognito 서비스 소개 :: 윤석찬 - AWS Monthly Webinar

Amazon Cognito

Amazon Mobile Analytics

Amazon SNS Mobile Push

Amazon Kinesis Recorder

DynamoDB Mapper

S3 Transfer Manager

SQS Client Amazon SES Client

AWS 글로벌 인프라

모바일 앱, 모바일 게임, IoT 디바이스

AWS 모바일 SDK(iOS, Android), API 엔드포인트, AWS 관리 콘솔

컴퓨팅 스토리지 네트워크 데이터 분석 데이터베이스

AWS Lambda

LambdaFunctions

λ λ λλ

AWS 모바일 빌딩 블럭

Amazon API Gateway

Amazon Device Farm

Page 6: 빠른 모바일 인증 구현을 위한 Amazon Cognito 서비스 소개 :: 윤석찬 - AWS Monthly Webinar
Page 7: 빠른 모바일 인증 구현을 위한 Amazon Cognito 서비스 소개 :: 윤석찬 - AWS Monthly Webinar

v

AWS Mobile SDK

Amazon Mobile Analytics

Amazon Cognito (Sync)

AWS Identity and Access Management

Amazon Cognito(Identity Broker)

Amazon S3Transfer Manager

Amazon CloudFront(Device Detection)

Amazon DynamoDB(Object Mapper)

Amazon Kinesis(Recorder)

Amazon Mobile Analytics

Amazon SNS Mobile Push

Your Mobile App

사용자 인증

사용자 권한 부여

사용자 행동 분석

미디어의 저장 및 공유

인증정보 단말간 공유

미디어 전송

공유 데이터의 저장

실시간 데이터 스트림 처리재방문 추적

푸시 알림 전송

AWS Mobile SDK

Page 8: 빠른 모바일 인증 구현을 위한 Amazon Cognito 서비스 소개 :: 윤석찬 - AWS Monthly Webinar

2016년 9월 30일 서울리전 서비스 개시

Page 9: 빠른 모바일 인증 구현을 위한 Amazon Cognito 서비스 소개 :: 윤석찬 - AWS Monthly Webinar

v

Amazon Cognito 소개

간단한 인증 방식제공 및 접근 관리

완전 관리형서비스로서 사용자가입 및 로그인 기능

제공

디바이스 및 플랫폼간데이터 동기화

사용자 가입 및로그인 서비스

디바이스 및 플랫폼관계 없이 사용자 인증

및 데이터 동기화다양한 소셜 로그인방식을 통해 쉽게

로그인 가능

Page 10: 빠른 모바일 인증 구현을 위한 Amazon Cognito 서비스 소개 :: 윤석찬 - AWS Monthly Webinar

Amazon Cognito 서비스 구조

Page 11: 빠른 모바일 인증 구현을 위한 Amazon Cognito 서비스 소개 :: 윤석찬 - AWS Monthly Webinar

v

아이덴티티제공자

사용자아이덴티티철수 영희 민수

모든 디바이스모든 플랫폼

모든 AWS 서비스

Amazon Cognito: 사용자 인증

Mobile Analytics

S3 DynamoDB Kinesis

다양한 소셜 로그인 제공트위터, 페이스북, 구글플러스 및 아마존인증을 손쉽게 인증할 수 있음

디바이스 및 플랫폼간 인식 가능다양한 디바이스와 운영체제에서도 사용자인증이 가능함

안전한 인증 체계 구축모바일 디바이스에서 안전하게 AWS 서비스에접근가능하며 IAM(Identity and Access Management)사용 가능

Page 12: 빠른 모바일 인증 구현을 위한 Amazon Cognito 서비스 소개 :: 윤석찬 - AWS Monthly Webinar

v

Amazon Cognito: 게스트 사용자 지원

VisitorPreferences

Cognito Store

Guest

EC2 S3 DynamoDB Kinesis

게스트 사용자 접근90%의 단순 앱 사용자를 위해 계정 생성이나로그인없이도 AWS 서비스를 안전하게 접근 가능

클라우드 데이터 저장손님에서 가입 및 로그인 하면 끊김없이 데이터저장 가능

보안 베스트 프랙티스 활용가입 및 로그인 후에도 사용자 권한은 일시적이고제한적으로 접근하게 되며 AWS 보안 규정에따라 안전하게 관리 가능

iOS Android JavaScript

Page 13: 빠른 모바일 인증 구현을 위한 Amazon Cognito 서비스 소개 :: 윤석찬 - AWS Monthly Webinar

v

Amazon Cognito: 모바일 보안 체계

EC2 S3 DynamoDB Kinesis

AWS Credentials 보호AWS Access Key나 Access Credential을모바일앱에 포함하지 않고, 임시 크리덴셜을부여받음

임시 토큰 기반 인증일시적이고 제한된 권한만 가진 토큰을 무작위로생성 전달하며 이를 삭제할 수 있음

세부적인 AWS 접속 허용기존 IAM 사용자 권한에 따라서 제한적인 AWS 접근 권한을 조절 가능.

자체 인증 시스템 사용자체 인증을 가지고 있는 경우에도,GetOpenIdTokeForDeveloperIdentity() 를통해 활용 가능

Page 14: 빠른 모바일 인증 구현을 위한 Amazon Cognito 서비스 소개 :: 윤석찬 - AWS Monthly Webinar

v

Amazon Cognito: 인증 체계도

Identitypool

IdentityProviders

같은 보안 정책을공유하는 아이덴티티풀

AccessPolicy AccesstoAWSServicesidentitypool

UnauthenticatedIdentities

authenticatedidentities

AWS IAM Roles

AWSAccount

웹 아이덴티티풀

S3

DynamoDB

Get Delete Put

Page 15: 빠른 모바일 인증 구현을 위한 Amazon Cognito 서비스 소개 :: 윤석찬 - AWS Monthly Webinar

v

Amazon Cognito: 데이터 동기화

User Data Storage andSync

iOS/Android/FireOS

k/v data

Identity pool

앱데이터, 환경 설정 및 상태 저장로그인 이후에 앱 및 디바이스 데이터를디바이스 및 플랫폼과 관계 없이 한 줄의코드로 저장

오프라인 지원데이터는 로컬 SQLite DB에 먼저저장하므로 인터넷 접속과 관계 없이사용 가능

백엔드 없이 이용간단한 SDK를 이용하여 서버 사이드코드가 필요 없음

Page 16: 빠른 모바일 인증 구현을 위한 Amazon Cognito 서비스 소개 :: 윤석찬 - AWS Monthly Webinar

사례: Concrete Software

Amazon Cognito를 이용하여 보다빠르고 사용자 경험이 좋은

모바일 게임을 만들 수있었습니다.Keith A. Pichelman

CEO, Concrete Software

“ • 다중 디바이스 및 플랫폼을 통해중단없는(seamless) 사용자 경험 제공 필요

• 백엔드 서버 없이도 클라우드에 게임 진행 사항저장 및 디바이스별 동기화

문제점

해결법

• Amazon Cognito를 통해 안전하게 AWS 자원에 접근 가능

• Cognito Sync를 통해 백엔드 인프라 없이도사용자 디바이스의 캐싱하고 클라우드에저장하는 유연성 제공

Page 17: 빠른 모바일 인증 구현을 위한 Amazon Cognito 서비스 소개 :: 윤석찬 - AWS Monthly Webinar
Page 18: 빠른 모바일 인증 구현을 위한 Amazon Cognito 서비스 소개 :: 윤석찬 - AWS Monthly Webinar

단계1: Identity Pool 생성

Page 19: 빠른 모바일 인증 구현을 위한 Amazon Cognito 서비스 소개 :: 윤석찬 - AWS Monthly Webinar

단계2: 기본 IAM Role 생성

Page 20: 빠른 모바일 인증 구현을 위한 Amazon Cognito 서비스 소개 :: 윤석찬 - AWS Monthly Webinar

v

단계3: SDK 다운로드 및 샘플 코드 적용

Page 21: 빠른 모바일 인증 구현을 위한 Amazon Cognito 서비스 소개 :: 윤석찬 - AWS Monthly Webinar

v

Amazon Cognito: 동기화 기능 예제

CredentialsProvider 및 CognitoClient 초기화

데이터 동기화

원하는 데이터 셋이나 키/밸류 설정

provider = new CognitoCachingCredentialsProvider (context, AWS_ACCOUNT_ID, COGNITO_POOL_ID, COGNITO_ROLE_UNAUTH, COGNITO_ROLE_AUTH, Regions.US_EAST_1);

cognito = new CognitoSyncManager (context, Regions.US_EAST_1, provider);

dataset.synchronize(new SyncCallback(){..});

cognito.openOrCreateDataset(datasetName);dataset.put(key, value);

Page 22: 빠른 모바일 인증 구현을 위한 Amazon Cognito 서비스 소개 :: 윤석찬 - AWS Monthly Webinar

v

DataSet *dataset = [syncClient openOrCreateDataSet:@"myDataSet"];NSString *value = [dataset readStringForKey:@"myKey"];[dataset putString:@"my value" forKey:@"myKey"];

AWSCognitoSyncClient *syncClient = [[AWSCognitoSyncClient alloc] initWithConfiguration: configuration];

[dataset synchronize];

Amazon Cognito: 동기화 기능 예제

CredentialsProvider 및 CognitoClient 초기화

데이터 동기화

원하는 데이터 셋이나 키/밸류 설정

Page 23: 빠른 모바일 인증 구현을 위한 Amazon Cognito 서비스 소개 :: 윤석찬 - AWS Monthly Webinar

모든 개발자의 숙명… 회원 가입 및 로그인

항상 해야 하는 중복된 작업자신의 사용자 디렉토리를 만들기 위해많은 시간과 리소스를 투자해야만 했음

인증 및 보안에 대한 고려가 필요사용자 확인, 인증 및 암호 관리 등보안적인 관리 및 처리가 쉽지 않음

인증의 확장성의 문제앱이 성공하고 나면, 늘어나는 사용자 디렉토리인프라를 확장 필요성

Amazon Cognito UserPools

Page 24: 빠른 모바일 인증 구현을 위한 Amazon Cognito 서비스 소개 :: 윤석찬 - AWS Monthly Webinar

Amazon Cognito User Pools 소개

FederationIdentitiesYourUserPools사용자 계정 서비스에 대한관리형 서비스로서,수억명의사용자까지 쉽게 확대 가능

3rd 파티 ID제공자 (페이스북, TwitterandSAML제공자 등)를 통해 로그인 할수 있음.AWS 리소스에 대한 앱의 접근에 대해제어할 수 있음

Page 25: 빠른 모바일 인증 구현을 위한 Amazon Cognito 서비스 소개 :: 윤석찬 - AWS Monthly Webinar

Cognito User Pools 특징

여러분의 모바일 웹 및 앱에대해 별도 사용자 관리

기능을 만들지 않아도 됩니다.

쉬운 사용자 관리

AWS가 가진 보안에 대한경험을 기반으로 이메일 인증,

MFA 인증의 기능을 쉽게적용할 수 있습니다.

높은수준보안 관리

사용자 디레토리를 손쉽게생성합니다. 간단하면서,

안전하고, 낮은 비용의 완전관리형 서비스로 수억명까지

확장 가능합니다.

사용자 디렉토리 관리

Page 26: 빠른 모바일 인증 구현을 위한 Amazon Cognito 서비스 소개 :: 윤석찬 - AWS Monthly Webinar

Congnito User Pools 주요 기능

이메일혹은전화번호 확인

암호분실/재설정

회원 가입 및로그인

사용자는 이메일 주소나전화번호를 통해 계정 확인

사용자는 자신의 암호를변경하거나 재설정 가능

사용자는 이메일, 전화번호혹은 아이디로 회원 가입

맞춤형사용자프로파일

사용자 프로필 가져오기및 추가 속성 관리 가능

SMS-기반MFA 멀티 팩터 인증(MFA)를사용하게 할 수 있음

토큰 기반 인증

원격 암호프로토콜

OpenIDConnect(OIDC)와 OAuth2.0 지원

SecureRemotePassword(SRP)를 통한 암호 처리

Page 27: 빠른 모바일 인증 구현을 위한 Amazon Cognito 서비스 소개 :: 윤석찬 - AWS Monthly Webinar

Cognito Sign-in 흐름

Device CognitoIdentity AWSSTSLogin

GetIdValidation

Validation

GetCredentialsForIdentity

CognitoSign-in

Page 28: 빠른 모바일 인증 구현을 위한 Amazon Cognito 서비스 소개 :: 윤석찬 - AWS Monthly Webinar

AWS Lambda Hook을 통한 커스터마이징

LambdaHook 로직을추가- Pre- andpostusersign-up- Pre- andpostusersign-in- Postuserconfirmation

사용 예- 사기 감지- Email검증- 맞춤형 메시지 검증

및 광고 게재

Page 29: 빠른 모바일 인증 구현을 위한 Amazon Cognito 서비스 소개 :: 윤석찬 - AWS Monthly Webinar

Cognito User Pools 과 API 게이트웨이

CustomAuthorizer기능API에 대한 접근을 제어하기위해 Oauth나 SAML과 같은 토큰인증 기능 사용 가능

NativeSupportUserPools는 API 게이트웨이와 함께API 요청을 인가. API 게이트웨이가ID토큰을 받아서 유저풀에 기반한사용자 인증 가능

Page 30: 빠른 모바일 인증 구현을 위한 Amazon Cognito 서비스 소개 :: 윤석찬 - AWS Monthly Webinar
Page 31: 빠른 모바일 인증 구현을 위한 Amazon Cognito 서비스 소개 :: 윤석찬 - AWS Monthly Webinar

단계 1. UserPool 이름 만들기

Page 32: 빠른 모바일 인증 구현을 위한 Amazon Cognito 서비스 소개 :: 윤석찬 - AWS Monthly Webinar

단계 2. 가입 속성 및 맞춤형 속성 추가

Page 33: 빠른 모바일 인증 구현을 위한 Amazon Cognito 서비스 소개 :: 윤석찬 - AWS Monthly Webinar

단계 3. 암호 설정 정책 정하기

Page 34: 빠른 모바일 인증 구현을 위한 Amazon Cognito 서비스 소개 :: 윤석찬 - AWS Monthly Webinar

단계 4. 가입 확인 방식 정하기

Page 35: 빠른 모바일 인증 구현을 위한 Amazon Cognito 서비스 소개 :: 윤석찬 - AWS Monthly Webinar

단계 5. 디바이스에 저장 방식 정하기

Page 36: 빠른 모바일 인증 구현을 위한 Amazon Cognito 서비스 소개 :: 윤석찬 - AWS Monthly Webinar

단계 6. 애플리케이션 등록

Page 37: 빠른 모바일 인증 구현을 위한 Amazon Cognito 서비스 소개 :: 윤석찬 - AWS Monthly Webinar

단계 7. 가입 시 맞춤형 트리거 추가

Page 38: 빠른 모바일 인증 구현을 위한 Amazon Cognito 서비스 소개 :: 윤석찬 - AWS Monthly Webinar

Amazon Cognito 실습해 보기

https://github.com/channy/aws-lambda-zombie-workshop/blob/master/README-ko.md

ZombieMicroservicesWorkshop은 AmazonCongnito,AWSLambda및 AmazonAPIGateway,AmazonDynamoDB와 기타 AWS서비스를기반으로 서버 없는(Serverless)애플리케이션을 구축해 보는 실습 과정으로 전세계적인 좀비 확산 사태가 발생할 경우,AWSLambda생존자 구출 특공대의 일원으로서생존자간 소통을 위한 시스템을 구축하는업무를 완료하게 됩니다.

한국어 실습가이드

Page 39: 빠른 모바일 인증 구현을 위한 Amazon Cognito 서비스 소개 :: 윤석찬 - AWS Monthly Webinar

v

AWS Mobile SDK로 개발 시작하기

SDK다운로드 iOS |Android |UnityAmazonCognito용 JavascriptSDK(베타)다운로드

SDK시작안내서 iOS |Android |Unity

Cognito시작안내서 iOS |Android

Cognito API참조사용자풀 |ID페더레이션 |동기화Cognito사용자풀샘플앱 iOS |Andriod

https://aws.amazon.com/ko/cognito/dev-resources/

Page 40: 빠른 모바일 인증 구현을 위한 Amazon Cognito 서비스 소개 :: 윤석찬 - AWS Monthly Webinar

Q&A

@channyun

AWS 클라우드 서비스 사용 시, 궁금한 점은 페이스북 메시지 혹은이메일 [email protected] 으로 해주세요!

http://bit.ly/awskr-feedback