AWS Cognito
AWS의 Cognito에 대하여 알아보자
소프트웨어 공학 수업을 듣다 보면 교수님께서 Reuse를 강조하신다.
AWS의 Cognito는 FIrebase Authentication처럼 인증과 권한 관리를 직접 구현하지 않고 쉽게 재사용할 수 있게 만들어둔 서비스다.
더 정확한 명칭으로 말하자면 클라우드 기반 서비스 중 IDaas(Identity as a Service)라는 갖다 쓰는 인증 서비스다.
AWS Cognito를 이용한 회원가입과 로그인 구현에 대한 주요 태스크를 개략적으로 설명하고 이후 구체적인 내용들을 하나하나 작성하겠다.
주요 태스크 for 사용자 풀을 사용한 가입 및 로그인 추가
1.
사용자 풀을 사용해 사용자 디렉터리 생성
2.
앱 추가
3.
SAML 기반 자격 증명 공급자(IdP)를 통해 사용자 풀에 로그인 추가
4.
사용자 풀 SDK 설치
5.
사용자 지정
6.
사용자 풀 보안 기능 구성
본 포스팅의 목표는 다음과 같다.
목표
1.
사용자 풀 생성
2.
회원가입
3.
로그인
4.
인증시 발급된 토큰으로 AWS API Gateway 호출
AWS Cognito 사용자 풀 생성
1.
Amazon Cognito 콘솔로 이동
2.
사용자 풀 선택 후 페이지 오른쪽 상단에 사용자 풀 생성 선택
3.
로그인 환경 구성
NOI는 로그인 시 이메일과 비밀번호를 받기로 기획했으므로, 이메일만 택해준다.
참고로, 이는 사용자 풀 생성 후 변경 불가하다는 점 알아두자.
4.
보안 요구 사항 구성
a.
암호 강도는 아래와 같이 설정해줬다.
b.
멀티 팩터 인증(MFA)은 하지 않았다. (MFA 방법으로 SMS메시지 혹은 인증 앱을 이용하는 방법들이 있다. SMS 메시지 방식은 Amazon SMS에서 비용이 별도 부과되어 일단 사용하지 않기로 결정했다. 인증앱 방식은 Authy와 Google Authenticator와 같은 앱에서 TOTP를 사용하여 인증하는데, 유저 경험이 떨어질 거 같아 사용하지 않기로 결정했다.
c.
사용자 계정 복구 방식은 이메일만을 택해 이메일을 통해 비밀번호 재설정을 할 수 있게 했다.
5.
가입 환경 구성 → 변경하지 않고 그대로 뒀다
a.
셀프 등록 활성화 → 안 하면 회원가입 API 못 만든다
b.
속성 확인 및 사용자 계정 확인 허용, 이메일 메시지 전송, 이메일 주소 확인 → 이메일 확인하는 과정이다.
c.
필수 속성/사용자 지정 속성 → 이전 선택 사항인 email 외에 추가적으로 넣지 않았다.
그 이유는, noi의 경우 cognito는 사용자 db 테이블까지 대체한다기보단, jwt 토큰 서버만 대체해 정말 말그대로 인증/인가 기능만 해주고, 실제 사용자 정보는 db에 따로 테이블을 두기로 했기 때문이다. 즉, cognito엔 cognito_id와 사용자 이메일만 저장하고, db의 테이블은 cognito_id와 사용자의 나머지 정보를 저장한다.
6.
메시지 전달 구성
a.
사용자에게 이메일 메시지를 보내는 방법으로 Amazon SES를 사용하는 방법 대신 Cognito를 사용하게 설정해줬다
b.
사용자에게 메일을 보낼 때 발송자 주소는 기본 주소로 설정했다
7.
앱 통합
a.
초기 앱 클라이언트
i.
기밀 클라이언트 택
1.
백엔드 서버에서 인증을 처리하는 경우 ⇒ 기밀
2.
SPA 혹은 모바일 앱에서 직접 인증 처리하는 경우 ⇒ 퍼블릭
ii.
클라이언트 보안키 생성 택
1.
기밀 클라이언트 사용할 예정 없으면 클라이언트 보안키 생성하지 않는 것이 좋음
나는 처음에 퍼블릭으로 잘못 만들어, 생성 후에 앱 클라이언트를 추가로 생성해줬다. 클라이언트는 후에 얼마든 추가 생성할 수 있단 점을 알아두자
b.
고급 설정
refresh token과 access token의 유효 기간을 변경해줄 수 있습니다
8.
검토 및 생성 → 사용자 풀 생성 클릭
AWS Cognito에서 앱 클라이언트의 보안키 확인하기
1.
Cognito 콘솔로 이동
2.
사용자 풀 선택
3.
앱 통합 탭에 들어가 앱 클라이언트 목록 중 원하는 앱 클라이언트를 선택
4.
보안키 표시 토클 켜서 보안키 확인하기 (초기에 자동으로 생성된 보안키 확인 가능)
결론
오늘은 본 목표에서 1까지 했고, 2,3,4는 다음 TIL에 이어 적는다.
목표
1.
사용자 풀 생성
2.
회원가입
3.
로그인
4.
인증시 발급된 토큰으로 AWS API Gateway 호출
하루 정리
TIL 작성하기
월) 10시 솔챌 회의
화) 5시-6시 기계 회의
화) 9시-11시 솔챌 코어타임
NOI
AWS Cognito 사용자 풀 생성
취준
내일배움카드 신청하기
이력서 새로 만들기,,, 워드로 ^^
학교현장실습 공지 확인하기