Nest.js - AWS Cognito

김민섭·2023년 5월 4일
0

Nest.js

목록 보기
4/4

AWS Cognito

Cognito란?
Amazon Cognito는 웹 및 모바일 앱에 대한 인증, 권한 부여 및 사용자 관리를 제공합니다. 사용자는 사용자 이름과 암호를 사용하여 직접 로그인하거나 Facebook, Amazon, Google 또는 Apple 같은 타사를 통해 로그인할 수 있습니다

위 내용은 AWS 공식문서에서 제공하는 Cognito에 대한 설명이다.
간단하게 말하면 회원가입과 로그인, Facebook, Amazon, Google, Apple 같은 소셜로그인도 간편하게 할 수 있도록 지원해주는 서비스이다
또한 가입되어 있는 내용으로 각 API에 접근 권한을 설정해 줄 수 있다.


소셜로그인은 위와 같이 구성되어 있으며 코그니토에서 제공하는 redirect_uri를 각 소셜 플랫폼에 등록하는 것만으로 간편하게 이용할 수 있다.

Cognito는 사용자 풀(user pool)과 자격 증명 풀(identity pool)로 구성되어 있는데, 이 둘을 조합하거나 또는 각각 별개의 형태로 사용할 수 있고, 이들 각각의 역할은 다음과 같다.

  • 사용자 풀 - 사용자의 가입과 로그인을 제공하는 사용자 저장소
  • 자격 증명 풀 - 사용자 풀에 저장된 정보를 바탕으로 로그인 또는 회원가입에 성공한 사용자에게 AWS 인프라의 여러 서비스에 대한 권한을 부여할 수 있는 서비스

이 글에서는 구글을 예시로 Cognito를 이용한 소셜로그인 방법에 대해서 알아보려고 한다.

Cognito를 이용한 구글 소셜 로그인

우선 아래의 링크를 통해 구글 클라우드 플랫폼에서 애플리케이션을 등록한다.
https://console.cloud.google.com/apis/credentials?hl=ko&project=arctic-kiln-370707

승인된 자바스크립트 원본에는 아래의 사진에 Cognito 도메인에 해당하는 내용을 넣어놓고

승인된 리디렉션 URI는 아래의 형식으로 넣어주면 된다.
Cognito 도메인/oauth2/idpresponse

구글 클라우드 플랫폼에 저장을 마치면 코그니도로 돌아와서
아래의 사진에 있는 자격 증명 공급자 추가를 눌러준다.

구글의 클라이언트 ID와 클라이언트 보안키를 입력하고
권한 부여 범위에 email openid와 같은 권한을 입력해준다.
각 권한의 구분자는 띄어쓰기이다

이제 마무리 단계다.
아래의 형식으로 인터넷 주소창에 입력을 하면 코그니토 로그인 창이 뜨고 로그인을 하고 나면 설정해 놓은 redirect_uri로 리다이렉트가 될 것이다.

Cognito 도메인/login?response_type=code&state=STATE&scope=&client_id=Cognito클라이언트 ID&redirect_uri=코그니토에 등록한 redirect_uri

혹시 안되거나 막히는 부분이 있으시다면 alstjq123579@daum.net으로 연락주세요!

AWS Cognito의 장, 단점

장점
1. SAML을 통한 보안 문제 해결.
2. 놀라운 확장성. (SOCIAL IDENTITY를 추가하기만 하면 끝, 모바일 앱까지 확장 가능)
3. 편리한 사용자 관리. (USER POOL 기능 제공)
4. 로직에 집중해서 빠른 개발이 가능하다.

단점
1. 서비스 이용요금을 내야한다.
2. Cognito에서 지원하지 않는 네이버나 카카오를 이용할 경우 복잡한 과정이 필요하다.

profile
getting ready to run

0개의 댓글