Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
빠른 인증 서비스 구현을 위한
Amazon Cognito 서비스 소개
윤석찬
아마존웹서비스코리아, 테크에반젤리스트
@channyun
v
모바일 개발자 가라사대…
직면한 문제점
플랫폼 파편화
확장성 높은 동기화의 어려움
앱 관리 및 운영 비용 증가
핵심 UX 만드는데도 시간 증가
사용자에게 줄 핵심 기능 구현 시간 저하
앱개발은 만만한 작업이 아니다!...
v
AWS 가라사대…
모바일 앱 코드
사용자 인증 및 관리
사용자 데이터 싱크
비동기 커뮤니케이션
디바이스 대응
푸시 노티피케이션
사용자 이벤트 기능처리
플랫폼 독립적 모바일 백엔드
데이터 유효성 및 전송
파일 및 미디...
v
AWS 가라사대…
모바일 앱 관리
서버 없는 모바일 백엔드
API 개발 및 인증 관리
SDK 생성 및 개발자 지원
앱 자동 테스트
품질 관리 향상
다양한 디바이스 대응
AWS Device Farm
Amazon API...
Amazon
Cognito
Amazon Mobile
Analytics
Amazon SNS
Mobile Push
Amazon Kinesis
Recorder
DynamoDB
Mapper
S3 Transfer
Manager
...
v
AWS Mobile SDK
Amazon Mobile
Analytics
Amazon Cognito
(Sync)
AWS Identity and
Access Management
Amazon Cognito
(Identity...
2016년 9월 30일 서울리전 서비스 개시
v
Amazon Cognito 소개
간단한 인증 방식
제공 및 접근 관리
완전 관리형
서비스로서 사용자
가입 및 로그인 기능
제공
디바이스 및 플랫폼간
데이터 동기화
사용자 가입 및
로그인 서비스
디바이스 및 플랫폼
관...
Amazon Cognito 서비스 구조
v
아이덴티티
제공자
사용자
아이덴티티철수 영희 민수
모든 디바이스
모든 플랫폼
모든 AWS
서비스
Amazon Cognito: 사용자 인증
Mobile
Analytics
S3 DynamoDB Kinesis
다양한 소셜...
v
Amazon Cognito: 게스트 사용자 지원
Visitor
Preferences
Cognito
Store
Guest
EC2 S3 DynamoDB Kinesis
게스트 사용자 접근
90%의 단순 앱 사용자를 위해 ...
v
Amazon Cognito: 모바일 보안 체계
EC2 S3 DynamoDB Kinesis
AWS Credentials 보호
AWS Access Key나 Access Credential을
모바일앱에 포함하지 않고, 임...
v
Amazon Cognito: 인증 체계도
Identitypool
Identity	
Providers
같은 보안 정책을
공유하는 아이덴티티풀
Access	Policy
Access	to	AWS	
Servicesident...
v
Amazon Cognito: 데이터 동기화
User Data
Storage and
Sync
iOS/Android/FireOS
k/v data
Identity pool
앱데이터, 환경 설정 및 상태 저장
로그인 이후에...
사례: Concrete Software
Amazon Cognito를 이용하여 보다
빠르고 사용자 경험이 좋은
모바일 게임을 만들 수
있었습니다.Keith A. Pichelman
CEO, Concrete Software
...
단계1: Identity Pool 생성
단계2: 기본 IAM Role 생성
v
단계3: SDK 다운로드 및 샘플 코드 적용
v
Amazon Cognito: 동기화 기능 예제
CredentialsProvider 및 CognitoClient 초기화
데이터 동기화
원하는 데이터 셋이나 키/밸류 설정
provider = new CognitoCach...
v
DataSet *dataset = [syncClient openOrCreateDataSet:@"myDataSet"];
NSString *value = [dataset readStringForKey:@"myKey"];...
모든 개발자의 숙명… 회원 가입 및 로그인
항상 해야 하는 중복된 작업
자신의 사용자 디렉토리를 만들기 위해
많은 시간과 리소스를 투자해야만 했음
인증 및 보안에 대한 고려가 필요
사용자 확인, 인증 및 암호 관리 등
...
Amazon Cognito User Pools 소개
Federation	Identities
Your	User	Pools
사용자 계정 서비스에 대한
관리형 서비스로서,수억명의
사용자까지 쉽게 확대 가능
3rd 파티 ID제...
Cognito User Pools 특징
여러분의 모바일 웹 및 앱에
대해 별도 사용자 관리
기능을 만들지 않아도 됩니다.
쉬운 사용자 관리
AWS가 가진 보안에 대한
경험을 기반으로 이메일 인증,
MFA 인증의 기능을 ...
Congnito User Pools 주요 기능
이메일 혹은
전화번호 확인
암호
분실/재설정
회원 가입 및
로그인
사용자는 이메일 주소나
전화번호를 통해 계정 확인
사용자는 자신의 암호를
변경하거나 재설정 가능
사용자는 ...
Cognito Sign-in 흐름
Device Cognito	Identity AWS	STS
Login
GetId
Validation
Validation
GetCredentialsForIdentity
Cognito	Sig...
AWS Lambda Hook을 통한 커스터마이징
Lambda	Hook 로직을 추가
- Pre- and	post	user	sign-up
- Pre- and	post	user	sign-in
- Post	user	confir...
Cognito User Pools 과 API 게이트웨이
Custom	Authorizer	기능
API에 대한 접근을 제어하기
위해 Oauth나 SAML과 같은 토큰
인증 기능 사용 가능
Native	Support
User...
단계 1. UserPool 이름 만들기
단계 2. 가입 속성 및 맞춤형 속성 추가
단계 3. 암호 설정 정책 정하기
단계 4. 가입 확인 방식 정하기
단계 5. 디바이스에 저장 방식 정하기
단계 6. 애플리케이션 등록
단계 7. 가입 시 맞춤형 트리거 추가
Amazon Cognito 실습해 보기
https://github.com/channy/aws-lambda-zombie-workshop/blob/master/README-ko.md
Zombie	Microservices	W...
v
AWS Mobile SDK로 개발 시작하기
SDK	다운로드 iOS |	Android |	Unity
Amazon	Cognito용 Javascript	SDK(베타)	다운로드
SDK	시작 안내서 iOS |	Android ...
Q&A
@channyun
AWS 클라우드 서비스 사용 시, 궁금한 점은 페이스북 메시지 혹은
이메일 channyun@amazon.com 으로 해주세요!
http://bit.ly/awskr-feedback
빠른 모바일 인증 구현을 위한 Amazon Cognito 서비스 소개 :: 윤석찬 - AWS Monthly Webinar
빠른 모바일 인증 구현을 위한 Amazon Cognito 서비스 소개 :: 윤석찬 - AWS Monthly Webinar
빠른 모바일 인증 구현을 위한 Amazon Cognito 서비스 소개 :: 윤석찬 - AWS Monthly Webinar
Upcoming SlideShare
Loading in …5
×

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

5,878 views

Published on

Amazon Cognito 서비스 소개

Published in: Technology
  • Be the first to comment

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

  1. 1. 빠른 인증 서비스 구현을 위한 Amazon Cognito 서비스 소개 윤석찬 아마존웹서비스코리아, 테크에반젤리스트 @channyun
  2. 2. v 모바일 개발자 가라사대… 직면한 문제점 플랫폼 파편화 확장성 높은 동기화의 어려움 앱 관리 및 운영 비용 증가 핵심 UX 만드는데도 시간 증가 사용자에게 줄 핵심 기능 구현 시간 저하 앱개발은 만만한 작업이 아니다! 모바일 앱 코드 사용자 인증 및 관리 사용자 데이터 싱크 비동기 커뮤니케이션 활성 디바이스 분석 사용자 행태 분석 사용자 참여 분석 푸시 노티피케이션 사용자 이벤트 기능처리 플랫폼 독립적 모바일 백엔드 데이터 유효성 및 전송 파일 및 미디어 저장 공유 데이터베이스 스토리지 데이터 수집 기타등등…
  3. 3. v AWS 가라사대… 모바일 앱 코드 사용자 인증 및 관리 사용자 데이터 싱크 비동기 커뮤니케이션 디바이스 대응 푸시 노티피케이션 사용자 이벤트 기능처리 플랫폼 독립적 모바일 백엔드 데이터 유효성 및 전송 파일 및 미디어 저장 공유 데이터베이스 스토리지 데이터 수집 기타등등… Amazon Mobile Analytics Amazon SNS Mobile Push AWS Lambda Mobile-optimized Connectors (Amazon Kinesis, Amazon S3, Amazon DynamoDB, Amazon SQS) Amazon Cognito
  4. 4. v AWS 가라사대… 모바일 앱 관리 서버 없는 모바일 백엔드 API 개발 및 인증 관리 SDK 생성 및 개발자 지원 앱 자동 테스트 품질 관리 향상 다양한 디바이스 대응 AWS Device Farm Amazon API Gateway 모바일 앱 개발 모바일 백엔드를 한번에 구성 모바일 샘플 앱 코드 제공 모바일 서비스 통합 및 선택 연동 AWS MobileHub
  5. 5. 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 Lambda Functions λ λ λλ AWS 모바일 빌딩 블럭 Amazon API Gateway Amazon Device Farm
  6. 6. v AWS Mobile SDK Amazon Mobile Analytics Amazon Cognito (Sync) AWS Identity and Access Management Amazon Cognito (Identity Broker) Amazon S3 Transfer 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
  7. 7. 2016년 9월 30일 서울리전 서비스 개시
  8. 8. v Amazon Cognito 소개 간단한 인증 방식 제공 및 접근 관리 완전 관리형 서비스로서 사용자 가입 및 로그인 기능 제공 디바이스 및 플랫폼간 데이터 동기화 사용자 가입 및 로그인 서비스 디바이스 및 플랫폼 관계 없이 사용자 인증 및 데이터 동기화 다양한 소셜 로그인 방식을 통해 쉽게 로그인 가능
  9. 9. Amazon Cognito 서비스 구조
  10. 10. v 아이덴티티 제공자 사용자 아이덴티티철수 영희 민수 모든 디바이스 모든 플랫폼 모든 AWS 서비스 Amazon Cognito: 사용자 인증 Mobile Analytics S3 DynamoDB Kinesis 다양한 소셜 로그인 제공 트위터, 페이스북, 구글플러스 및 아마존 인증을 손쉽게 인증할 수 있음 디바이스 및 플랫폼간 인식 가능 다양한 디바이스와 운영체제에서도 사용자 인증이 가능함 안전한 인증 체계 구축 모바일 디바이스에서 안전하게 AWS 서비스에 접근가능하며 IAM(Identity and Access Management)사용 가능
  11. 11. v Amazon Cognito: 게스트 사용자 지원 Visitor Preferences Cognito Store Guest EC2 S3 DynamoDB Kinesis 게스트 사용자 접근 90%의 단순 앱 사용자를 위해 계정 생성이나 로그인없이도 AWS 서비스를 안전하게 접근 가능 클라우드 데이터 저장 손님에서 가입 및 로그인 하면 끊김없이 데이터 저장 가능 보안 베스트 프랙티스 활용 가입 및 로그인 후에도 사용자 권한은 일시적이고 제한적으로 접근하게 되며 AWS 보안 규정에 따라 안전하게 관리 가능 iOS Android JavaScript
  12. 12. v Amazon Cognito: 모바일 보안 체계 EC2 S3 DynamoDB Kinesis AWS Credentials 보호 AWS Access Key나 Access Credential을 모바일앱에 포함하지 않고, 임시 크리덴셜을 부여받음 임시 토큰 기반 인증 일시적이고 제한된 권한만 가진 토큰을 무작위로 생성 전달하며 이를 삭제할 수 있음 세부적인 AWS 접속 허용 기존 IAM 사용자 권한에 따라서 제한적인 AWS 접근 권한을 조절 가능. 자체 인증 시스템 사용 자체 인증을 가지고 있는 경우에도, GetOpenIdTokeForDeveloperIdentity() 를 통해 활용 가능
  13. 13. v Amazon Cognito: 인증 체계도 Identitypool Identity Providers 같은 보안 정책을 공유하는 아이덴티티풀 Access Policy Access to AWS Servicesidentitypool Unauthenticated Identities authenticated identities AWS IAM Roles AWS Account 웹 아이덴티티풀 S3 DynamoDB Get Delete Put
  14. 14. v Amazon Cognito: 데이터 동기화 User Data Storage and Sync iOS/Android/FireOS k/v data Identity pool 앱데이터, 환경 설정 및 상태 저장 로그인 이후에 앱 및 디바이스 데이터를 디바이스 및 플랫폼과 관계 없이 한 줄의 코드로 저장 오프라인 지원 데이터는 로컬 SQLite DB에 먼저 저장하므로 인터넷 접속과 관계 없이 사용 가능 백엔드 없이 이용 간단한 SDK를 이용하여 서버 사이드 코드가 필요 없음
  15. 15. 사례: Concrete Software Amazon Cognito를 이용하여 보다 빠르고 사용자 경험이 좋은 모바일 게임을 만들 수 있었습니다.Keith A. Pichelman CEO, Concrete Software ” “ • 다중 디바이스 및 플랫폼을 통해 중단없는(seamless) 사용자 경험 제공 필요 • 백엔드 서버 없이도 클라우드에 게임 진행 사항 저장 및 디바이스별 동기화 문제점 해결법 • Amazon Cognito를 통해 안전하게 AWS 자원에 접근 가능 • Cognito Sync를 통해 백엔드 인프라 없이도 사용자 디바이스의 캐싱하고 클라우드에 저장하는 유연성 제공
  16. 16. 단계1: Identity Pool 생성
  17. 17. 단계2: 기본 IAM Role 생성
  18. 18. v 단계3: SDK 다운로드 및 샘플 코드 적용
  19. 19. 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);
  20. 20. 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 초기화 데이터 동기화 원하는 데이터 셋이나 키/밸류 설정
  21. 21. 모든 개발자의 숙명… 회원 가입 및 로그인 항상 해야 하는 중복된 작업 자신의 사용자 디렉토리를 만들기 위해 많은 시간과 리소스를 투자해야만 했음 인증 및 보안에 대한 고려가 필요 사용자 확인, 인증 및 암호 관리 등 보안적인 관리 및 처리가 쉽지 않음 인증의 확장성의 문제 앱이 성공하고 나면, 늘어나는 사용자 디렉토리 인프라를 확장 필요성 Amazon Cognito UserPools
  22. 22. Amazon Cognito User Pools 소개 Federation Identities Your User Pools 사용자 계정 서비스에 대한 관리형 서비스로서,수억명의 사용자까지 쉽게 확대 가능 3rd 파티 ID제공자 (페이스북, Twitter and SAML 제공자 등)를 통해 로그인 할수 있음. AWS 리소스에 대한 앱의 접근에 대해 제어할 수 있음
  23. 23. Cognito User Pools 특징 여러분의 모바일 웹 및 앱에 대해 별도 사용자 관리 기능을 만들지 않아도 됩니다. 쉬운 사용자 관리 AWS가 가진 보안에 대한 경험을 기반으로 이메일 인증, MFA 인증의 기능을 쉽게 적용할 수 있습니다. 높은 수준 보안 관리 사용자 디레토리를 손쉽게 생성합니다. 간단하면서, 안전하고, 낮은 비용의 완전 관리형 서비스로 수억명까지 확장 가능합니다. 사용자 디렉토리 관리
  24. 24. Congnito User Pools 주요 기능 이메일 혹은 전화번호 확인 암호 분실/재설정 회원 가입 및 로그인 사용자는 이메일 주소나 전화번호를 통해 계정 확인 사용자는 자신의 암호를 변경하거나 재설정 가능 사용자는 이메일, 전화번호 혹은 아이디로 회원 가입 맞춤형 사용자 프로파일 사용자 프로필 가져오기 및 추가 속성 관리 가능 SMS-기반 MFA 멀티 팩터 인증(MFA)를 사용하게 할 수 있음 토큰 기반 인증 원격 암호 프로토콜 OpenID Connect (OIDC) 와 OAuth 2.0 지원 Secure Remote Password (SRP)를 통한 암호 처리
  25. 25. Cognito Sign-in 흐름 Device Cognito Identity AWS STS Login GetId Validation Validation GetCredentialsForIdentity Cognito Sign-in
  26. 26. AWS Lambda Hook을 통한 커스터마이징 Lambda Hook 로직을 추가 - Pre- and post user sign-up - Pre- and post user sign-in - Post user confirmation 사용 예 - 사기 감지 - Email 검증 - 맞춤형 메시지 검증 및 광고 게재
  27. 27. Cognito User Pools 과 API 게이트웨이 Custom Authorizer 기능 API에 대한 접근을 제어하기 위해 Oauth나 SAML과 같은 토큰 인증 기능 사용 가능 Native Support User Pools는 API 게이트웨이와 함께 API 요청을 인가. API 게이트웨이가 ID 토큰을 받아서 유저풀에 기반한 사용자 인증 가능
  28. 28. 단계 1. UserPool 이름 만들기
  29. 29. 단계 2. 가입 속성 및 맞춤형 속성 추가
  30. 30. 단계 3. 암호 설정 정책 정하기
  31. 31. 단계 4. 가입 확인 방식 정하기
  32. 32. 단계 5. 디바이스에 저장 방식 정하기
  33. 33. 단계 6. 애플리케이션 등록
  34. 34. 단계 7. 가입 시 맞춤형 트리거 추가
  35. 35. Amazon Cognito 실습해 보기 https://github.com/channy/aws-lambda-zombie-workshop/blob/master/README-ko.md Zombie Microservices Workshop은 Amazon Congnito, AWS Lambda 및 Amazon API Gateway, Amazon DynamoDB와 기타 AWS 서비스를 기반으로 서버 없는(Serverless) 애플리케이션을 구축해 보는 실습 과정으로 전 세계적인 좀비 확산 사태가 발생할 경우, AWS Lambda 생존자 구출 특공대의 일원으로서 생존자간 소통을 위한 시스템을 구축하는 업무를 완료하게 됩니다. 한국어 실습 가이드
  36. 36. v AWS Mobile SDK로 개발 시작하기 SDK 다운로드 iOS | Android | Unity Amazon Cognito용 Javascript SDK(베타) 다운로드 SDK 시작 안내서 iOS | Android | Unity Cognito 시작 안내서 iOS | Android Cognito API 참조 사용자 풀 | ID 페더레이션 | 동기화 Cognito 사용자 풀 샘플 앱 iOS | Andriod https://aws.amazon.com/ko/cognito/dev-resources/
  37. 37. Q&A @channyun AWS 클라우드 서비스 사용 시, 궁금한 점은 페이스북 메시지 혹은 이메일 channyun@amazon.com 으로 해주세요! http://bit.ly/awskr-feedback

×