[TIL/Coin Site Project] 2024/01/23

์›๋ฏผ๊ด€ยท2024๋…„ 1์›” 23์ผ

Coin Site Project

๋ชฉ๋ก ๋ณด๊ธฐ
22/31
post-thumbnail

๐Ÿ”ฅ AWS Cognito Flow(with. KakaoTalk)

reference: https://haandol.github.io/2021/01/31/cognito-kakao-login.html

1. User -> Web Page โœ๏ธ

Sign in via Kakao โ˜๏ธ

โœ… a) ์นด์นด์˜ค ์ธ์ฆ์„ ์›น ํŽ˜์ด์ง€์— ํ†ตํ•ฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ํ•™์Šตํ•ด์•ผ ํ•œ๋‹ค.

โœ… b) OAuth 2.0 ์ธ์ฆ์„ ํ†ตํ•œ ์นด์นด์˜ค ๋กœ๊ทธ์ธ ํ”Œ๋กœ์šฐ๋ฅผ ์ดํ•ดํ•ด์•ผ ํ•œ๋‹ค.

2. User -> KakaoTalk โœ๏ธ

Redirect with Auth code โ˜๏ธ

โœ… a) ์‚ฌ์šฉ์ž๋ฅผ ์นด์นด์˜คํ†ก์œผ๋กœ ๋ฆฌ๋””๋ ‰์…˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ํ•™์Šตํ•ด์•ผ ํ•œ๋‹ค.

โœ… b) ์ธ์ฆ ์ฝ”๋“œ๋ฅผ ์–ป๋Š” ๋ฐฉ๋ฒ•์„ ์ดํ•ดํ•ด์•ผ ํ•œ๋‹ค.

3. KakaoTalk -> Web Page โœ๏ธ

Callback with Tokens โ˜๏ธ

โœ… a) ์นด์นด์˜คํ†ก์—์„œ์˜ ์ฝœ๋ฐฑ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•์„ ์ตํ˜€์•ผ ํ•œ๋‹ค.

โœ… b) ์ฝœ๋ฐฑ์œผ๋กœ๋ถ€ํ„ฐ ํ† ํฐ์„ ์ถ”์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ดํ•ดํ•ด์•ผ ํ•œ๋‹ค.

4. Web Page -> Amazon API Gateway โœ๏ธ

Auth with API โ˜๏ธ

โœ… a) Amazon API Gateway์— ๋Œ€ํ•œ ์ธ์ฆ๋œ ์š”์ฒญ์„ ์–ด๋–ป๊ฒŒ ๋ณด๋‚ผ์ง€ ํ•™์Šตํ•ด์•ผ ํ•œ๋‹ค.

โœ… b) API ์š”์ฒญ์— ํ† ํฐ์„ ํฌํ•จํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ดํ•ดํ•ด์•ผ ํ•œ๋‹ค.

5. Amazon API Gateway -> AWS Lambda โœ๏ธ

Invoke with Kakao Token โ˜๏ธ

โœ… a) API Gateway๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์„ค์ •ํ•˜๊ณ  ์นด์นด์˜ค ํ† ํฐ์„ AWS Lambda์— ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ํ•™์Šตํ•ด์•ผ ํ•œ๋‹ค.

โœ… b) API Gateway์—์„œ์˜ ์ธ์ฆ์„ ์œ„ํ•œ ์„ค์ •์„ ์ดํ•ดํ•ด์•ผ ํ•œ๋‹ค.

6. AWS Lambda -> KakaoTalk API โœ๏ธ

Fetch Email โ˜๏ธ

โœ… a) AWS Lambda์—์„œ KakaoTalk API๋กœ HTTP ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์›Œ์•ผ ํ•œ๋‹ค.

โœ… b) ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•œ ์นด์นด์˜คํ†ก API๋ฅผ ์ดํ•ดํ•ด์•ผ ํ•œ๋‹ค.

7. AWS Lambda -> AWS Cognito UserPool โœ๏ธ

Sign in โ˜๏ธ

โœ… a) AWS SDK ๋˜๋Š” API Gateway๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž๋ฅผ Cognito UserPool์— ๋กœ๊ทธ์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์›Œ์•ผ ํ•œ๋‹ค.

โœ… b) Cognito UserPool๊ณผ์˜ ์ธ์ฆ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ดํ•ดํ•ด์•ผ ํ•œ๋‹ค.

8. AWS Cognito UserPool -> AWS Lambda โœ๏ธ

Invoke Hook Passively โ˜๏ธ

โœ… a) Cognito UserPool ํŠธ๋ฆฌ๊ฑฐ/ํ›…์— ๋Œ€ํ•œ ํ•™์Šต์„ ์ง„ํ–‰ํ•ด์•ผ ํ•œ๋‹ค.

โœ… b) ํŠน์ • Cognito ์ด๋ฒคํŠธ์—์„œ Lambda ํ•จ์ˆ˜๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ดํ•ดํ•ด์•ผ ํ•œ๋‹ค.

9. AWS Cognito UserPool -> Google โœ๏ธ

Sign in via Google โ˜๏ธ

โœ… a) Cognito ์‚ฌ์šฉ์ž์™€ Google ๊ณ„์ •์„ ์—ฐ๊ฒฐํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ์ดํ•ดํ•ด์•ผ ํ•œ๋‹ค.

10. ํ•™์Šต ๋ชฉํ‘œ โœ๏ธ

๐Ÿ”ต OAuth 2.0 flow์— ๋Œ€ํ•ด ์ดํ•ดํ•œ๋‹ค.

๐Ÿ”ต AWS Lambda, Amazon API Gateway, AWS Cognito์— ๋Œ€ํ•œ ๊ธฐ๋ณธ์ ์ธ ์ดํ•ด์— ๋„๋‹ฌํ•œ๋‹ค.

๐Ÿ”ต ๊ถ๊ทน์ ์œผ๋กœ, ์„œ๋ฒ„๋ฆฌ์Šค ์•„ํ‚คํ…์ฒ˜ ๋ฐ AWS ์ƒํƒœ๊ณ„์— ๋Œ€ํ•œ ์ดํ•ด๋„๋ฅผ ๋†’์ธ๋‹ค.

๐Ÿ”ต ์ฝ”์ธ ์‹œํ™ฉ ์‚ฌ์ดํŠธ ํ”„๋กœ์ ํŠธ ๋‚ด์—์„œ, ์œ„ ๋‚ด์šฉ์„ ์„ฑ๊ณต์ ์œผ๋กœ ๊ตฌํ˜„ํ•œ๋‹ค.

๐Ÿ”ฅ ํšŒ๊ณ 

์ตœ๊ทผ ๋ฉฐ์น ๊ฐ„, ๋จธ๋ฆฟ์†์„ ์ž ์‹ํ•œ ํ™”๋‘(่ฉฑ้ ญ)๋Š” ๋‹ค๋ฆ„ ์•„๋‹Œ '๋ฌธ์ œ ์ •์˜(Problem Definition)'์˜€๋‹ค. "์•„ ์˜คํ‚ค, ๋ฌธ์ œ ์ •์˜๊ฐ€ ์ค‘์š”ํ•˜๋‹ค๋Š” ๊ฑด ์‹ญ๋ถ„ ๊ณต๊ฐํ•ด. ๊ทผ๋ฐ ๋„๋Œ€์ฒด ๋ฌธ์ œ ์ •์˜๊ฐ€ ๋ญ”๋ฐ 10๋•์•„."

๋ฌธ์ œ๋Š” ์†๋œ ๋ง๋กœ '๋นก์ด ๋ˆ ์ƒํ™ฉ'์ด๋‹ค. ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•œ ๋Œ€์ƒ ๋˜๋Š” ์ƒํ™ฉ์„ ์ง€์นญํ•˜๋Š” ๋‹จ์–ด์ด๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์ •์˜(Definition)๊ฐ€ ๋„๋Œ€์ฒด ๋ญ์ง€?

์•„์ธ ๋žœ๋“œ๋Š” '๋‚ญ๋งŒ์ฃผ์˜ ์„ ์–ธ'์—์„œ ์ •์˜(Definition)๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ‘œํ˜„ํ–ˆ๋‹ค.
"The first line of defense against the chaos of mental disintegration."
์ •์˜(Definition)๋Š”, ์ •์‹  ๋ถ„์—ด์˜ ํ˜ผ๋ž€์— ๋งž์„œ ์‹ธ์šฐ๋Š” ์ตœ์ „์„ ์ด๋ผ๋Š” ๊ฒƒ์ด๋‹ค.
๋ถ„์—ด์—์„œ ํžŒํŠธ๋ฅผ ์–ป์—ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ๋ฌธ์ œ ์ •์˜๋Š”, ์„ธ์ƒ์— ์กด์žฌํ•˜๋Š” ๋‹ค์–‘ํ•œ '๋น„๊ตฌ์กฐํ™”'๋œ ๋ฌธ์ œ๋ฅผ '๊ตฌ์กฐํ™”'ํ•˜๋Š” ๊ณผ์ •์ด๊ฒ ๋‹ค. ํ•œ๋งˆ๋””๋กœ, ๋นก์ด ๋ˆ ์ƒํ™ฉ์— ๋‚˜๋ฆ„๋Œ€๋กœ์˜ ๋ชฉ์ฐจ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์ด ๋ฌธ์ œ ์ •์˜์ด๋‹ค. ์ดํ›„ ๋‹จ๊ณ„๋Š” ์ด์ „ TIL์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ, ๋ถ„ํ•  ์ •๋ณต(divide and conquer)์ด๋‹ค.

๋ฌธ์ œ์˜ flow๋ฅผ ๊ฑด์กฐํ•˜๊ฒŒ(=๊ฐ์ •์„ ์ตœ๋Œ€ํ•œ ๋ฐฐ์ œํ•˜๊ณ ) ๋ฐ”๋ผ๋ณธ ๋’ค ๋‚˜๋ฆ„์˜ ๊ตฌ์กฐ๋ฅผ ์„ค์ •ํ•˜๊ณ , ๊ตฌ์กฐ๋กœ๋ถ€ํ„ฐ ํ• ๋‹น๋˜๋Š” ๋ฌธ์ œ๋ฅผ ๋” ์ž‘์€ ๋‹จ์œ„๋กœ ๋ถ„ํ• ํ•œ ๋’ค, ์ตœ์ข…์ ์œผ๋กœ๋Š” ๋ชจ๋“  ์กฐ๊ฐ์„ merge ํ•˜๋Š” ๊ฒƒ. ์ด๊ฒƒ์ด ๋ฐ”๋กœ ๋ฌธ์ œ ์ •์˜์™€ ํ•ด๊ฒฐ์ด๋‹ค. ๊ฐœ๋ฐœ์€ ์—ญ์‹œ ์งœ๋ฆฟํ•ด. ๋น„๋‹จ ๊ฐœ๋ฐœ์—๋งŒ ์ ์šฉ๋˜๋Š” ๋‚ด์šฉ์€ ์•„๋‹ˆ๊ฒ ์ง€๋งŒ.

profile
Write a little every day, without hope, without despair โœ๏ธ

0๊ฐœ์˜ ๋Œ“๊ธ€