AWS Cognito
- Cognito는 사용자에게 자격을 부여해 서버나 애플리케이션과 상호작용하도록 함
- Cognito 사용자 풀은 애플리케이션 사용자용 로그인 기능이 있고 API Gateway와 통합됨
- Cognito 자격 증명 풀(Federated Identity, 페더레이션 자격 증명 풀)은 AWS 자격 증명을 직접 애플리케이션 사용자에게
제공해 AWS 리소스에 직접 액세스하도록 하며, 자격 증명 제공자로서 Cognito 사용자 풀과 통합함 - Cognito 동기화는 장치에서 Cognito로 데이터를 동기화하는 것이며 지금은 AppSync로 대체됨
AWS Cognito User Pools (CUP)
- Cognito 사용자 풀은 CUP라고도 하며 모바일 애플리케이션용 서버리스 사용자 데이터베이스으로
사용자명이나 이메일, 비밀번호를 조합해 쉽게 로그인하고 이메일이나 핸드폰 번호를 인증할 수 있음 - 멀티 팩터 인증을 추가하거나 비밀번호 정책을 만들고 페더레이션 자격 증명 활성화도 가능
- 예) 사용자가 Facebook과 Google, SAML 등을 통해 로그인하도록 허용해서 사용자 풀에 들어오도록 자격을 부여하는 것
- 로그인 후 JWT라고 불리는 JSON 웹 토큰을 부여하며 이는 누군가의 신분을 확인할 때 사용되며
API Gateway와는 인증을 위해 통합이 가능 - 앱이 있고 CUP에 인증을 하고 싶다면, 비밀번호를 사용해 로그인을 하고 CUP는 로그인을 확인한 후, JWT를 제공
사용자 데이터베이스에는 이메일과 비밀번호 또는 사용자명과 비밀번호, 또는 Facebook과 Google 로그인을 쓸 수 있음
- 로그인을 한 후 자격을 부여받아 API Gateway와 통합
AWS Cognito – Federated Identity Pools
- Cognito 자격 증명 풀(FIP)의 목표는 클라이언트 측에서 프록시나 API 없이 AWS 환경으로 직접 액세스하도록 유도하는 것
- 이를 위해 페더레이션 자격 증명 제공자에 로그인하거나 익명을 유지할 수 있으며
이런 옵션을 통해 AWS 자격 증명을 일시적으로 페더레이션 자격 증명 풀에서 얻게 되며
자격 증명에 함께 딸려 오는 IAM 정책을 기반으로 작업할 수 있음 - 예) Facebook 로그인을 통해 S3 버킷에 임시 쓰기 권한을 얻고 싶을 때 페더레이션 자격 증명 풀을 사용
- 애플리케이션에서 자격 증명 제공자(Google, Facebook, Twitter, SAML, OpenID, Cognito 사용자 풀 등 무엇이든 가능)로
로그인한 후 토큰을 얻어 이를 페더레이션 자격 증명 풀로 넘겨주게 되고
FIP에 인증하면 자격 증명 제공자에게 토큰을 인증받게 되어 본인이 맞는지 신분 확인을 한 후,
페러데이션 자격 증명은 STS 서비스와 통신해서 AWS에 대한 임시 자격 증명을 얻게 되며
임시 자격 증명을 넘겨받은 애플리케이션은 임시 AWS 자격 증명을 갖게 되어 S3 버킷과 작접 상호작용이 가능해짐
- FIP의 핵심은 로그인을 자격 증명 제공자로 대체해서 임시 AWS 자격 증명을 얻는 것이며
AWS와 애플리케이션 사용자가 더 직접적으로 상호작용 할 수 있게 해 줌
AWS Cognito Sync
- 사용자 설정과 구성, 애플리케이션 상태를 저장하고 장치 간 동기화 기능도 수행
- iOS, Android 등 어느 플랫폼에서든 가능하며
오프라인 작업도 가능하여 설정을 오프라인으로 바꾸고 온라인으로 돌아오면 자동으로 동기화됨 - 동기화를 잘 작동하게 하려면 사용자 풀이 아닌 Cognito 페더레이션 자격 증명 풀이 필요
- 데이터는 데이터셋에 저장되고 각 데이터셋은 최대 1MB까지이며 데이터셋은 최대 20개까지 동기화 가능
'Cloud > AWS' 카테고리의 다른 글
[SAA] 모바일 애플리케이션 : MyTodoList (0) | 2022.04.14 |
---|---|
[SAA] 서버리스 애플리케이션 모델(SAM) 개요 (0) | 2022.04.14 |
[SAA] API Gateway 보안 (0) | 2022.04.13 |
[SAA] API Gateway 개요 (0) | 2022.04.13 |
[SAA] DynamoDB 고급 기능 (0) | 2022.04.13 |