- ์ค๋์ ์ปจ๋์ ์ด ์ข์ง ์์ ๊ฐ์ธ ๊ฐ๋ฐ๋ก ๋์ฒดํ์์ด์! ํด๋น ํฌ์คํธ๋ฅผ ๋ณด์๊ณ ! ๋ฐ๋ผ ๊ตฌํํด๋ณด๋๊ฑธ ๊ถ์ฅํ ๊ฒ์~~!
OAuth ๋ก๊ทธ์ธ ๋ฐ ์๋ ์์ผ ์ ๋ ฅ ํ๋ฆ ๊ตฌํํ๊ธฐ
์ค๋์ ์นด์นด์ค OAuth๋ฅผ ํ์ฉํ ๋ก๊ทธ์ธ ์์คํ ๊ณผ ์๋ ์์ผ ์ ๋ ฅ ๋จ๊ณ๋ฅผ ์ด๋ป๊ฒ ๊ตฌํํ๋์ง ๋ฐฐ์ ์ต๋๋ค. ๋น๊ฐ๋ฐ์๋ ์ดํดํ ์ ์๋๋ก ์ฝ๊ฒ ์ค๋ช ํด ๋ณผ๊ฒ์.
๐ค OAuth๋ ๋ฌด์์ธ๊ฐ์?
OAuth(Open Authorization)๋ ์ธํฐ๋ท ์ฌ์ฉ์๋ค์ด ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๊ณตํ์ง ์๊ณ ๋ค๋ฅธ ์น์ฌ์ดํธ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๊ทผ ๊ถํ์ ๋ถ์ฌํ ์ ์๋ ๊ณตํต์ ์ธ ์๋จ์ ๋๋ค. ์ฝ๊ฒ ๋งํด, โ์นด์นด์ค๋ก ๋ก๊ทธ์ธํ๊ธฐโ, โ๊ตฌ๊ธ๋ก ๋ก๊ทธ์ธํ๊ธฐโ ๊ฐ์ ๊ธฐ๋ฅ์ ๊ฐ๋ฅํ๊ฒ ํ๋ ๊ธฐ์ ์ด์์.
๐ฑ ์ค๋ ๊ตฌํํ ๋ด์ฉ
์ฐ๋ฆฌ๊ฐ ๋ง๋ ์น์ฌ์ดํธ๋ ๋ค์๊ณผ ๊ฐ์ ํ๋ฆ์ผ๋ก ๋์ํฉ๋๋ค:
- ์ฌ์ฉ์๊ฐ โ์นด์นด์ค๋ก ๋ก๊ทธ์ธโ ๋ฒํผ์ ํด๋ฆญ
- ์นด์นด์ค ๋ก๊ทธ์ธ ํ์ด์ง๊ฐ ๋ํ๋๊ณ ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธ
- ๋ก๊ทธ์ธ ์ฑ๊ณต ํ ์ฒ์ ๋ฐฉ๋ฌธํ ์ฌ์ฉ์๋ผ๋ฉด ์๋ ์์ผ ์ ๋ ฅ ํ๋ฉด์ด ํ์๋จ
- ์ด๋ฏธ ์๋ ์์ผ์ ์ ๋ ฅํ ์ฌ์ฉ์๋ ๋ฐ๋ก ๋ฉ์ธ ํ์ด์ง๋ก ์ด๋
๐ ์ฃผ์ ๊ตฌ์ฑ ์์๋ค
1. ๋ฐฑ์๋ (์๋ฒ) ๋ถ๋ถ
์๋ฒ๋ ์ค์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์ฒ๋ฆฌํ๋ ๊ณณ์ ๋๋ค.
User์ UserInfo ์ํฐํฐ
User: ์ฌ์ฉ์์ ๊ธฐ๋ณธ ์ ๋ณด(์นด์นด์ค ID ๋ฑ)๋ฅผ ์ ์ฅUserInfo: ์ฌ์ฉ์์ ์ถ๊ฐ ์ ๋ณด(์๋ ์์ผ, ๋๋ค์ ๋ฑ)๋ฅผ ์ ์ฅ
JWT(JSON Web Token)
- ๋ก๊ทธ์ธ ์ํ๋ฅผ ์ ์งํ๊ธฐ ์ํ ํ ํฐ
- ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์ํธํํ์ฌ ๋ธ๋ผ์ฐ์ ์ ์ ์ฅํด๋๊ณ , ์๋ฒ์ ์์ฒญํ ๋๋ง๋ค ํจ๊ป ๋ณด๋
OAuth ์ฑ๊ณต/์คํจ ์ฒ๋ฆฌ๊ธฐ
- ์นด์นด์ค ๋ก๊ทธ์ธ ์ฑ๊ณต ์: ์ฌ์ฉ์์ ์๋ ์์ผ ์ฌ๋ถ๋ฅผ ํ์ธํ์ฌ ๋ค๋ฅธ ํ์ด์ง๋ก ๋ฆฌ๋ค์ด๋ ํธ
- ์คํจ ์: ๋ฉ์ธ ํ์ด์ง๋ก ๋ฆฌ๋ค์ด๋ ํธ
2. ํ๋ก ํธ์๋ (์น ๋ธ๋ผ์ฐ์ ) ๋ถ๋ถ
์ฌ์ฉ์๊ฐ ์ง์ ๋ณด๊ณ ์ํธ์์ฉํ๋ ๋ถ๋ถ์ ๋๋ค.
Home ์ปดํฌ๋ํธ
- ๋ฉ์ธ ํ์ด์ง๋ฅผ ๋ณด์ฌ์ฃผ๋ ์ปดํฌ๋ํธ
- URL ํ๋ผ๋ฏธํฐ๋ฅผ ํ์ธํ์ฌ ๋ก๊ทธ์ธ ์ํ๋ ์๋ ์์ผ ์ ๋ ฅ ์ฌ๋ถ๋ฅผ ํ๋จ
BirthdayInputPopup ์ปดํฌ๋ํธ
- ์๋ ์์ผ์ ์ ๋ ฅ๋ฐ๋ ํ์ ์ฐฝ
- ์ ๋ ฅ๋ ์๋ ์์ผ์ ์๋ฒ์ ์ ์ฅํ๊ณ , ์๋ฒ์์ ๋ฐ์ ํ ํฐ์ ์ ์ฅ
AuthService
- ๋ก๊ทธ์ธ ๊ด๋ จ ๊ธฐ๋ฅ๋ค์ ๋ชจ์๋์ ์๋น์ค
- ํ ํฐ ์ ์ฅ, ๊ฐ์ ธ์ค๊ธฐ, ์ญ์ ๋ฑ์ ๊ธฐ๋ฅ ์ ๊ณต
๐งฉ ์๋ ๋ฐฉ์ (์์ธํ)
-
์นด์นด์ค ๋ก๊ทธ์ธ ๋ฒํผ ํด๋ฆญ โ ์นด์นด์ค ์ธ์ฆ ํ์ด์ง๋ก ์ด๋
- ์นด์นด์ค ์ธ์ฆ ์๋ฃ ํ โ ์๋ฒ์์ ์ฌ์ฉ์ ์ ๋ณด ํ์ธ
- ์๋
์์ผ ์์:
/?token={JWTํ ํฐ}์ฃผ์๋ก ๋ฆฌ๋ค์ด๋ ํธ - ์๋
์์ผ ์์:
/?userId={userId}์ฃผ์๋ก ๋ฆฌ๋ค์ด๋ ํธ
- ์๋
์์ผ ์์:
- ํ๋ก ํธ์๋์์ URL ํ๋ผ๋ฏธํฐ ํ์ธ
token์์: ๋ก์ปฌ ์คํ ๋ฆฌ์ง์ ์ ์ฅํ๊ณ ๋ก๊ทธ์ธ ์ํ๋ก ์ ํuserId์์: ์๋ ์์ผ ์ ๋ ฅ ํ์ ํ์
- ์๋
์์ผ ์
๋ ฅ ๋ฐ ์ ์ฅ
- ์๋ฒ์ ์๋ ์์ผ ์ ์ฅ API ํธ์ถ
- ์๋ฒ์์ JWT ํ ํฐ ๋ฐ๊ธ ๋ฐ์ ์ ์ฅ
- ๋ก๊ทธ์ธ ์ํ๋ก ์ ํ
๐ก ์์๋๋ฉด ์ข์ ์ฉ์ด๋ค
- JWT(JSON Web Token): ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์์ ํ๊ฒ ์ ๋ฌํ๋ ํ ํฐ
- OAuth: ์ธ๋ถ ์๋น์ค(์นด์นด์ค, ๊ตฌ๊ธ ๋ฑ)์ ์ธ์ฆ์ ํ์ฉํ๋ ๊ธฐ์
- ๋ก์ปฌ ์คํ ๋ฆฌ์ง: ์น ๋ธ๋ผ์ฐ์ ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ณต๊ฐ
- ๋ฆฌ๋ค์ด๋ ํธ: ๋ค๋ฅธ ํ์ด์ง๋ก ์๋์ผ๋ก ์ด๋์ํค๋ ๊ฒ
- API: ์๋ฒ์ ํด๋ผ์ด์ธํธ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋ฐฉ๋ฒ
๐ ์ค๋์ ๊ตํ
-
์ฌ์ฉ์ ๊ฒฝํ์ ์ธ์ธํ ํ๋ฆ์์ ๋ง๋ค์ด์ง๋๋ค. ๋ก๊ทธ์ธ ํ ๋ฐ๋ก ์๋น์ค ์ด์ฉ์ด ๊ฐ๋ฅํ๊ฒ ํ ์ง, ์ถ๊ฐ ์ ๋ณด๋ฅผ ์ ๋ ฅ๋ฐ์์ง ๋ฑ ๋ค์ํ ์๋๋ฆฌ์ค๋ฅผ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
-
๋ณด์์ ์ค์ํฉ๋๋ค! ๊ฐ์ธ์ ๋ณด(์๋ ์์ผ ๋ฑ)๋ ์์ ํ๊ฒ ์ ์ฅํ๊ณ , JWT ๊ฐ์ ํ ํฐ์ ํ์ฉํด ์ธ์ฆ ์์คํ ์ ๊ตฌ์ถํด์ผ ํฉ๋๋ค.
-
ํ๋ก ํธ์๋์ ๋ฐฑ์๋์ ํ์ ์ด ์ค์ํฉ๋๋ค. ์๋ก ์ฃผ๊ณ ๋ฐ๋ ๋ฐ์ดํฐ ํ์๊ณผ API ์ฃผ์ ๋ฑ์ ๋ช ํํ ์ ์ํด์ผ ํฉ๋๋ค.
์ด์์ผ๋ก ์ค๋์ ๊ฐ๋ฐ ์ด์ผ๊ธฐ๋ฅผ ๋ง์นฉ๋๋ค. ๊ฐ๋ฐ์ ์ด๋ ค์ ๋ณด์ด์ง๋ง, ํ๋์ฉ ๋จ๊ณ๋ฅผ ๋๋์ด ์๊ฐํ๋ฉด ์ดํดํ๊ธฐ ์ฌ์์! ๐