# Cognito

40개의 포스트

Nest.js - AWS Cognito

AWS Cognito Cognito란? Amazon Cognito는 웹 및 모바일 앱에 대한 인증, 권한 부여 및 사용자 관리를 제공합니다. 사용자는 사용자 이름과 암호를 사용하여 직접 로그인하거나 Facebook, Amazon, Google 또는 Apple 같은 타사를 통해 로그인할 수 있습니다 위 내용은 AWS 공식문서에서 제공하는 Cognito에 대한 설명이다. 간단하게 말하면 회원가입과 로그인, Facebook, Amazon, Google, Apple 같은 소셜로그인도 간편하게 할 수 있도록 지원해주는 서비스이다 또한 가입되어 있는 내용으로 각 API에 접근 권한을 설정해 줄 수 있다. ![](https://velog.velcdn.com/images/keeper1826/pos

2023년 5월 4일
·
0개의 댓글
·
post-thumbnail

Cognito에서 받은 JWT를 해석하여 로그인 한 유저의 정보 가져오기

서론 지난 글에서 API gateway에 권한 부여한 후 Cognito 인증하여 백엔드 리소스인 Lambda에 접근하는 것을 실습해봤다. 하지만 실제 어플리케이션이 사용자를 인식하여 동적으로 정보를 보여주기 위해서는 이것만으로는 충분하지 않을 것이다. 유저 맞춤형으로 정보를 제공해주기 위해서는 각 API 요청에서 헤더에 담겨있는 유저 정보를 꺼낼 수 있어야 한다. 이번 글에서는 Cognito로 생성한 JWT를 API gateway 뒤에 있는 백엔드 리소스 단에서 추출하여 사용자 정보를 인식하고 사용자 맞춤형 정보를 제공하는 실습을 진행한다. 시스템 구조 및 가정 현재 프로젝트의 시스템의 구조는 아래 그림과 같다. 본 글에서는 이와 같은 연결 설정이 모두 완료되었다고 가정하고 글을 진행할 것

2023년 4월 27일
·
0개의 댓글
·
post-thumbnail

Cognito를 사용하여 API gateway 접근 권한 부여하기

서론 Cognito의 역할 Cognito는 아래 그림과 같이 동작한다. 클라이언트 측에서 특정 경로로 접속하려고하는데, 그 경로가 권한이 부여되어있다면 접근이 제한된다. 클라이언트는 Cognito의 앱 클라이언트로 들어가서 로그인을 실행한다. 로그인에 성공하면 Cognito에서 인증 토큰을 발급하여 클라이언트 측으로 전송한다. 그리고 Cognito에 의해 Callback URL로 redirect되어 API gateway에 다시 접근하게 된다. HTTP API gateway는 JWT 권한 부여자를 통해 헤더의 JWT를 인식하고 이를 Cognito에 보내서 알맞은 토큰인지 검증 요청한다. 토큰이 알맞은 토큰일 경우 라우팅으로 접속하여 어플리케이션을 실행시켜 응답을 클라이언트에

2023년 4월 24일
·
0개의 댓글
·
post-thumbnail

Unity Cognito 구글 로그인 연동

일단 유니티와 aws cognito로 구글 로그인을 설정하는 방법을 설명해준 유투브를 참고해서 쭉 따라해보았다. 참고한 유투브 링크 유투브의 description에 이분이 만든 샘플 씬도 있으니 샘플 씬으로 테스트 해보면 좋을 것 같다. 코드를 보니 cognito에서 설정한 login URL을 열고 들어가서 로그인이 되면 redirect uri로 데이터를 보내주는데 redirect uri를 딥링크로 설정하여 앱이 열리도록 하는 방식이였다. 그리고 토큰은 캐시 메모리에 저장해두고 이 사람이 처음왔는지 왔던 사람인지 구분할 수 있도록 한다. 이 사람이 올린 샘플 코드를 보면 로그인이 실패하면 오류를 띄우고 성공하면 데이

2023년 4월 20일
·
0개의 댓글
·
post-thumbnail

AWS 1달러로 웹서비스 배포기

1달러로 AWS기반의 웹서비스 배포한 배포기에 대해 이야기합니다. 이번에 사용하게 된 AWS 서비스는 위와 같다. 1달러 중에서 대부분의 비용이 Route 53과 Secrets Manager에 치중이 되어있다. Secrets Manager를 사용하지 않으면, 코드에 키를 하드코딩하고 GitHub같은 곳에는 코드를 푸시할 수 없기때문에 상당히 귀찮아 진다. Vault같은 옵션도 있지만 결국 서버가 필요하게 되니 비용적인 측면에서 Secrets Manager를 결정하게 되었는데 아쉽게도 0.39달러나 나왔다. 도메인은 15000원에 가비아에서 구입을 했다. 도메인 구입비용은 제외를 했고, AWS 서비스 사용비용만 이야기했다. 가비아에서 구매한 도메인을 Amplify에 연결해주

2023년 4월 18일
·
0개의 댓글
·
post-thumbnail

AWS ALB 와 Cognito를 활용한 사용자 인증 기능 구현

운영 중인 웹 및 모바일에 사용자 인증 기능을 제공하기 위해서는 사용자에대한 User DataBase 관리, 사용자 인증, 권한 부여 등 여러가지 복잡하고 번거로운 작업등을 진행 해줘야합니다. 이러한 복잡한 일련의 작업을 쉽게 구현 할 수 있도록 AWS에서는 Cognito서비스를 제공하고 있습니다. 이번 포스팅에서는 ALB 와 Cognito를 활용하여 별도의 인증 기능을 구현하지않고도 운영중인 사이트에 user/password 기반의 사용자 인증 기능을 적용하는 방법에 대해서 알아 보도록 하겠습니다. 1. 사용자 풀 생성 1) 로그인

2023년 4월 11일
·
0개의 댓글
·

[React] aws-cognito-identity.js 로그인 구현

들어가기 React에서 AWS Cognito를 사용하는 방법은 두 가지이다. 첫 번째는 Amplify를 활용해서 backend를 구축하는 것이고, 두 번째는 aws-cognito-identity 라이브러리를 활용하는 것이다. 예전에는 Amplify 사용했는데 이번에는 aws-cognito-identity 라이브러리 활용했다. 아래는 AWS Cognito에 user pool이 생성되어 있다는 전제 하에 진행한다. How to use 설치 사용하기 아래는 user pool 정보를 설정한 config 파일의 일부이다. env 파일에 값을 넣어두고, 불러와서 사용했다. 아래는 회원가입, 로그인, 로그아웃을 구현한 코드. 더 다양한 함수는 링크에 가면 확인할 수 있다. 위에 만들어둔 login 함수를 사용해서

2023년 3월 14일
·
0개의 댓글
·
post-thumbnail

SpringBoot에서 AWS Cognito로 10분만에 로그인/회원가입 구현

AWS Cognito in SpringBoot 안녕하세요, 귀찮은걸 딱 싫어하는 데브옵스 엔지니어 최정민입니다. 많은 분들이 Java/Springboot 생태계에서 서비스 혹은 개인 프로젝트를 개발을 진행하고 계실 거라고 생각합니다. 이때 생각보다 많은 시간을 잡아먹는게 로그인, 회원가입이라 생각합니다. 개발자라면 다들 로그인, 회원 가입 기능 개발과 운영자라면 사용자 데이터 관리에 애를 먹었던 경험이 있을 것 같습니다. 오늘은 Amazon Cognito를 활용해 빠르고 간단하게 로그인/회원 가입/사용자 데이터 관리를 구현하는 방법을 알려드리겠습니다. 1. Amazon Cognito란? Amazon Cognito는 웹과 모바일 앱에 대한 인증, 권한 부여 및 사용자 관리를 제공하는 서비스입니다. Amazon Cognito는 크게 두 가지 구성 요소로 나뉘어집니다. 사용자 풀 사용자 풀은 앱 사용자의 가입 및 로그인 옵션을 제

2022년 12월 20일
·
0개의 댓글
·
post-thumbnail

[Error] Amplify 배포 에러 Cannot find file './aws-exports' in './src'

❌ Error 리액트 앱에서 amplify auth를 추가하고, amplify 를 사용해서 배포하려고 하는데 에러가 발생했다. 파일의 경로가 맞는데도 계속 파일을 찾을 수 없다고 에러 메시지가 뜨면서 배포 에러가 발생했다. 📌 Solution yml 파일에 amplifyPush —simple 명령어 추가 위의 명령어를 통해서 aws-exports.js 파일이 생성된다고 한다. 참조 [https://stackoverflow.com/questions/62706549/cannot-find-file-aws-exports-in-src](https://stackoverflow.com/questions/62706549/cannot-find-file-aws-exports-

2022년 11월 11일
·
0개의 댓글
·
post-thumbnail

[Error] OAuth - Error handling auth response. Error: attributes+required%3A+%5Bzoneinfo%5D

❌ Error > OAuth - Error handling auth response. Error: attributes+required%3A+%5Bzoneinfo%5D > 리액트 앱에서 AWS의 Cognito와 Google 소셜 로그인을 구현하면서 발생한 에러이다. 에러 메시지는 zoneinfo가 없어서 발생한 것으로 보였다. 현재 cognito user pool에는 email, name, zoneinfo가 필수적으로 필요하다. 하지만 google에서는 zoneinfo와 매칭되는 항목이 없었고, 별도로 그냥 적어서 매칭해주었다. 이게 원인이 되어 구글로 sign-in 하려고 하자 zoneinfo가 없어서 문제가 발생한 듯 한 것 같았다. [https://stackoverflow.com/qu

2022년 11월 11일
·
0개의 댓글
·
post-thumbnail

React | Amplify Cognito + Google Social Login 구현하기

⚡ 들어가기 이 포스팅은 리액트 앱에서 구글 소셜 로그인을 연동하는 방법에 대해서 설명합니다. 특히, AWS의 Amplify와 Cognito의 User Pool도 함께 사용해서 연동할 예정입니다. 구현하고자 하는 바는 리액트 웹 앱에서 구글 로그인 버튼을 클릭하면, 구글 계정을 선택해서 로그인되고, 로그인 되면서 Cognito User Pool에 사용자 정보가 생성되도록 하는 것입니다. ⚡ 구현하기 🔥 Google Cloud 설정 일단 구글 클라우드에 프로젝트가 생성됐다는 걸 전제하고 진행합니다. 📌 OAuth 동의 화면 설정 OAuth 동의 화면이 설정되어 있다면 할 필요가 없습니다. 최초 실행 시에는 설정해줘야 합니다. 구글 클라우드에서 API 및 서비스에서 OAuth 동의 화면에 들어가줍니다. User Type에서 외부를 선택합니다. ![](https://velog.velcdn.com/images/dlruddms5619/post/b25a7132

2022년 11월 9일
·
0개의 댓글
·
post-thumbnail

#8 BE 세팅(cognito) 적용 -3 SignIn

코그니토로 계정을 생성해보았고, 이제 그 계정으로 로그인해본다 사실 로그인이라기 보단, >유효한 토큰을 얻고, 그 토큰으로 api를 호출할 수 있는 권한을 얻는다 라고 이해해야한다 로그인 이라는 개념자체가 그러니까.. 무튼 FE에서 입력된 정보로 코그니토에 권한을 체크받아서 JWT 토큰 등을 받아보자 코그니토 권한 https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html 소스 UserServiceImpl.java User 서비스 단에서 토큰을 얻고 그걸 FE로 반환해줘야함! AwsCognitoServiceImpl.java clientId 는 코그니토 설정중에 앱 클라이언트를 생성하면 거기에 ID를 발급해주는데, 그 값을 넣어준다. AuthFlow 는 AWS 문서를 보고 타입을 결정해주면 된다(플젝에서 저

2022년 11월 4일
·
0개의 댓글
·
post-thumbnail

#8 BE 세팅(cognito) 적용 -2 SignUp

앞서서 세팅을 해주고 코드에는 어떻게 적용을 하는가 build.gradle 추가하는김에 s3도 추가했다 application.yml 이렇게만 세팅했고, userRestController에서 호출을 하도록 구성해봄 UserController.java UserServiceImpl.java 에는 아래처럼 대충 호출해서 생성이 되는지만 확인하려고함 AwsCognitoServiceImpl.java 우선 이런식으로 코그니토 클라이언트라는 객체를 통해 계정을 생성하고, 로그인하고 그런다 이렇게하고 postman으로 샘플로 테스트를 해보니.. 생성이 잘 되었다.... 이제 생성된 상태로 로그인을 시도해본다!

2022년 11월 3일
·
0개의 댓글
·
post-thumbnail

#8 BE 세팅(cognito) 적용 -1

참고한 블로그 Cognito(코그니토)란? 웹이나 모바일 앱 등에서 사용자 관리를 도와주는 AWS의 서비스 중 하나. 회원가입, 로그인, Token을 포함하여 회원관리를 해주며, OAuth 2.0도 함께 사용이 가능하여 제공하는 서비스 패스워드를 관리자 DB에서 가지고 있게되면, 암호화도 해야하고 토큰갱신 등 신경써야하는 부분이 많을 수 있는데, 이 부분들을 지원해준다 > 코그니토가 어떤식으로 인증절차를 관리하는지 내부 상세한 내용은 다음에 다루기로 하고, 여기서는 일단 적용해서 코그니토로 signUp, signIn 등의 서비스를 구현해보는것이 중점 코그니토 사용자 풀 생성 주소 "사용자 풀 관리" ![](https://velog.v

2022년 11월 1일
·
0개의 댓글
·
post-thumbnail

[React] AWS Cognito 로그인 적용기 (with. redux & redux-persist)

AWS Cognito를 접하게된 계기.. 회사에서 요즘 한창 관리자 페이지를 담당하고 있는데, 로그인 과정을 코그니토 서비스를 이용해서 구현해 놓으셨더라.. 회사 개발 스택이 현재 Vue 인 관계로, 이를 한번 응용해 React에 붙여보는 작업? 실습?을 진행해보기로 했다,, 시작..!!! 리액트 리덕스 프로젝트 흐름 사용자 관점에서의 과정 관리자 페이지 진입 시 코그니토에서 제공해주는 로그인 페이지가 뜨고 -> 사용자는 로그인을 진행 -> 로그인 성공 시 메인 페이지로 이동 / 로그인 실패 시 계속 로그인 페이지에 머무름 상세한 개발 과정 로그인에 성공하면 code 값을 추출하고 -> code 값을 이용해 사용자 token을 발급받고 -> 해당 token 값을

2022년 10월 17일
·
2개의 댓글
·
post-thumbnail

[Cognito + Amplify + React] 회원가입(Sign-in) 구현

⚡ 들어가기 이 포스팅은 Cognito user pool을 생성해두었다는 가정하에 작성했습니다. Amplify UI를 활용해서 쉽게 구현할 수도 있지만, custom 항목을 늘리려고 하니 amplify ui는 custom에 한계를 느껴서 React에서 직접 ui를 작성해서 사용했습니다. Cognito user pool 현재 required attributes는 name, email, zoneinfo 입니다. 💥구현 🔥 Amplify 설정 📌 Amplify 패키지 설치 React에서 amplify 사용을 위한 패키지를 설치합니다. amplify ui를 사용하지 않으면 첫 번째는 생략. 📌 Amplify 설정 파일 작성 awsconfig.js라는 파일을 작성해서 사

2022년 9월 13일
·
0개의 댓글
·
post-thumbnail

AWS Cognito 톺아보기

✍ 작성자: 황서경 🌻 AWS 스터디 1조 대표로 올리는 글입니다. 3주차 주제는 Cognito 입니다 🌻 ❓ Cognito란? > 🔰 사용자 인증을 하고, 사용자에게 권한을 부여하는 것 사용자들은 이 권한을 통해 어플리케이션과 상호작용하게 된다. 더 쉽게 말하자면, Cognito는 회원가입과 로그인 기능을 제공하는 서비스! 여기서 사용자란? IAM 사용자가 아니라 클라우드 외부의 사용자 (모바일 및 웹 어플리케이션 사용자)를 말한다. ??? : Cognito랑 IAM은 뭐가 다른데요? IAM: AWS 내에서의 자격 증명 (AWS 서비스에서 AWS 서비스로의 연결) Cognito: 앱(모바일, 웹)을 통해 접근하는 사용자 💨 Cognito 종류 Congito User Pools (CUP) - 사용자 풀 Cognito Identity Pools

2022년 7월 4일
·
0개의 댓글
·
post-thumbnail

AWS 강의 정리 (3)

Identity Access Management(IAM) Manage access of AWS users and resources IAM groups : share permission levels IAM Roles : associate permissions IAM policies : json documents which grant permissions for a specific user, group, or role. Inline Policy : 바로 user에게 policy 붙을 수 있음(role 안통하고) Managed Policies : can not edit. (orange box) Customer Managed Policies : is editable

2022년 6월 28일
·
0개의 댓글
·
post-thumbnail

next-auth 에러 해결

원래는 AWS-Amplify를 사용하여 auth 로직을 구현해오다가 이번 기회에 AWS-Amplify를 제거하고 구현을 하기로 해서 next-auth 라이브러리를 사용하기로 했다. Provider는 Cognito를 사용하기로 했고, 공식문서를 살펴보며 차근차근 구현해가다가 에러가 발생해서 삽질을 좀 오래했다.. > next-auth[NO_SECRET] 라는 워닝을 만났다. 터미널 창에서 에러로 뜨지않고 워닝으로만 떠서 별거 아니겠지 하며 대수롭게 넘겼는데 이 부분이 해결이 되지 않아서 제대로 작동하지 않았다.. 로그를 자세히 보는 습관을 들여야겠다. 해결 방법 공식문서를 살펴보자! .env.local 파일에 NEXTAUTH_SECRET 값을 넣어주면 해결된다. 그 값은 어떻게 넣어주냐! 아래 문서처럼 터미널에 를 입력하고 받은 값을 넣

2022년 4월 26일
·
0개의 댓글
·
post-thumbnail

AWS Cognito User pool을 DynamoDB에 저장하기

0. 들어가기 Cognito user pool은 사용자 정보를 담고 있는 디렉터리이다. 이 정보를 DB로 Export하는 기능은 없고, 회원가입 시에 Post confirm lambda를 트리거해서 Lambda에서 user 정보를 DB에 저장하도록 구현했다. Cognito user pool의 Lambda에 대해서는 공식 문서를 참조. 1. Create User pool User Pool은 이미 만들어져 있고, 속성은 아래와 같다. 사용자 ID, Email, name, sub로 구성되어 있다. 2.

2022년 4월 7일
·
0개의 댓글
·