22-08-03 Cognito 셋팅

jakemraz's glacier·2022년 9월 13일
0

Dev Log

목록 보기
5/5

Cognito를 셋팅하려는데, 아래 영상이 정말 많은 도움이 됐다.

https://www.youtube.com/watch?v=fL-7UycSsfw

특히 제일 많이 도움이 된 부분은


영상의 이 부분.

https://${domain}.auth.${region}.amazoncognito.com/login?client_id=${client_id}&response_type=token&redirect_uri=https://www.daum.net

cognito app을 다 생성 후 위의 값으로 들어간다.
예를 들면 아래와 같이 입력 한다. (물론 OAuth 서버, 즉 Cognito에 허용된 Redirect_uri는 미리 입력해 놔야 한다)

https://apiauthtest1.auth.us-east-1.amazoncognito.com/login?client_id=2iqdo52jkqg0q2cqbe76kqah08&response_type=token&redirect_uri=https://www.daum.net

중요한 부분은 response_type인데 token 또는 code를 입력 할 수 있다.

이때 token을 입력하면 로그인 이후 redirect_uri로 페이지가 전환되면서 #JWT 토큰이 반환된다.

위의 주소로 예를 들면, 로그인 성공 후

https://www.daum.net#asdfasdfasdf.asdfasdfdsa.asdfasdf

이런 식이다.

React나 Vue 같은 Framework을 썼으면 # 뒤의 값은 hash bang을 따서 저장하고 있다가, 이후에 서버에 요청 할 때마다 해당 JWT를 보내서 요청을 하면 될 것이다.

문제는.. 울 회사는 Server Side로 개발된 백엔드에 로그인 해야했다.

API Gateway를 아무리 열심히 뒤져 봤지만 주소로 넘어온 # 뒤의 값을 파싱하는게 아무리 해도 안됐다.

Flask 같은걸로도 시도해 봤는데 백엔드로는 #뒤의 값이 넘어오지 않는듯 했다. 생각해보면 맞는말 같다. 브라우져 입장에서 hashbang을 굳이 서버로 보낼 이유가 없다..
이럴때는 response_type=code를 쓰는 것이 유효했다.

reponse_type=code로 해놓고 요청을 보내면 웬 GUID가 리스폰스로 온다. 이제 이것을 이용해보자

POST https://${domain}.auth.${region}.amazoncognito.com/oauth2/token

제일 중요한 것은 /oauth2/token 이다.

header

  • grant_type: authoization_code

  • client_id : cognito에 있는 client_id

  • redirect_uri : cognito에 등록한 redirect_uri

  • code : 위에서 리턴된 값

이렇게 요청하면, 세상에,, 리스폰스로 JWT가 날라온다!!

그리고 나서 Validation 한 후 로그인 처리 시키면 된다.

그렇다면 Validation은 어떻게 해야 하는가?

물론 Amazon API Gateway 쓰면 아주 직빵으로 쉽다.

그래도 원리는 알고 쓰면 좋지 않을까?

여기서 필요한 것이 JWK 이다.

그것은 다음 시간에,,

일단 여기까지 성공한것 만으로도 기쁘다.

profile
SOFTWARE DEVOPS ENGINEER

0개의 댓글