티스토리 뷰
사용자 자격증명 및 데이터 동기화 서비스
모바일 인터넷에 연결된 다양한 기기에 설치된 앱에서 사용자 데이터를 손쉽게 관리할 수 있음
Google Facebook, Amazon 같은 로그인 서비스를 사용한 소셜 로그인 및 Guest 로그인 지원
Guest 사용자들은 로그인하지 않고 앱을 사용할 수 있으며, 나중에 로그인 서비스를 사용해 프로필을 만들어도
프로필 데이터가 그대로 이전
Amazon Cognito를 사용하면 어떤 종류의 사용자 데이터나 키-값 쌍으로 저장할 수 있음
환경설정이나 게임 진행상황 등 여러분의 앱에 필요한 것이라면 뭐든지
Cognito를 사용하면 네트워크, 저장소, 동기화 문제도 없고 백엔드 구축이 필요 없음
Cognito API를 사용해 사용자 데이터를 저장하고 동기화하면 됨(그것이 전부)
사용자 데이터는 그대로 AWS 클라우드에 안전하게 동기화되고 저장
Amazon Cognito를 적용시키는것은 매우 간단
다른 AWS 서비스를 사용하고 있다면 궁합이 더 좋음
사용자 인증 및 권한 관리에 신경쓸 필요 없이 AWS 자원에 접근하게 할 수 있음
cognito를 사용하면 앱을 개발하는데 집중하고, 사용자들은 안정된 사용 경험을 얻을 수 있음
사용자 데이터 동기화를 위한 백엔드 솔루션을 구축하는 수고를 줄여줌
인증(Authentication) -> AuthN(누구인가에 대한 문제): 문안에 들어올 수 있음
인가(Authoriztion -> AuthR(어떤 일을 할 수 있냐, 권한이 있냐): 단상 위에 올라와서 강연 권한은 없음
IAM을 사용해서 Role과 Policy에 대해서 권한과 허가 거부들을 설정
연동하기 불편하기 때문에 Cognito
사용자 pool 유저 데이터베이스를 cognito가 관리
cognito synk 기능
api 리소스를 호출한 사람이 정당한 권한이 있는지를 알게 되고 이 API가 호출될 수 있게 다른 서비스로부터 확인을 받아서 구동 및 연동하도록 API 게이트웨이가 설계되어있음
Cognito
누구냐라고 물어보면 user pool의 user이다라고 확인되면 id 토큰을 발급해줌
Cognito User Pool 2개의 토큰 발급
- ID Token
- Access Token
- Refresh Token(보조적)
API Gateway
Cognito와 연동해서 REST API 만들어주는 서비스
코그니토 유저풀이 필요한데 Authorizer(Cognito User Pool 람다 IAM) 다 사용할 수 없음
유저 데이터베이스를 쉽게 구성하고 유저에 대한 관리를 할 수 있는 매니지드 서비스
로그인하면 로그인한 상태 Authentication을 하고 나면 Authoriztion까지 하면 편하기 때문에 Cognito Identity가 그 역할을 해줌
Cognito Identity를 사용했을때 예시
사인인을 해서 그사람에 대한 토큰 ID를 받아서 Cognito Identity에 물어봄 > Validation을 받음
Validation 받은 그 토큰값을 이용해서 STS에서 인증에 해당하는 인가에 해당하는 권한에 관련된 최종 토큰 값을 받는 3가지 방식
AWS STS(Simple Token Service)
- 토큰 서비스가 가장 뒷단에 있음
- 어떤 인증이나 인가를 받을때 최종적으로 STS가 토큰값을 발행해줌