OAuth 2.0 ๋์ ๊ณผ์
OAuth์ ํ์์ฑ
ํ ๋ช
์ ํ์์ด N ๊ฐ์ ์ฌ์ดํธ์ ํ์ ๊ฐ์
์ ํ๋ค๋ฉด, ์ธํฐ๋ท ์ฌ์ฉ์์ N ๋ฐฐ์๋งํผ์ ์์ด๋๊ฐ ์๊ธด๋ค.
์ด๋ ๊ทธ๋งํผ ๊ฐ์ธ ์ ๋ณด๊ฐ ๋ง์ด ์ฌ์ฉ๋๋ค๋ ์๋ฏธ์ด๊ณ , ์ ์ฅ ๊ณต๊ฐ์ ์์์ ๊ฐ์ธ ์ ๋ณด์ ๋ํ ๋ณด์ ์์๊ฐ ๋ ๋ง์์ง๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค.
์ด๋ OAuth๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์ด๋ฒ์ ์นด์นด์ค ๊ฐ์ ์ฌ์ดํธ๋ก ๋ก๊ทธ์ธ์ ๋งก๊ธฐ๋ฉด ๋งก๊ธด ํํ์ด์ง๋ ์ธ์ฆ์ฒ๋ฆฌ์ ๋ํ ์๊ณ (ํ์๊ฐ์
, ํ์ ํํด, ๊ธฐ๊ฐ์ ๋ฐ๋ฅธ ๊ด๋ฆฌ ๋ฑ๋ฑ)์ ๋ ์ ์๋ค.
OAuth์ ๋ ๋จ๊ณ
OAuth๋ ํฌ๊ฒ ๋ ๋จ๊ณ๋ก ๋๋๋ค.
1. ์ฝ๋ฐฑ์ผ๋ก ์ฝ๋๊ฐ์ ๋ฐ๋ ๊ณผ์
2. Access Token์ผ๋ก ๋ฐ์ดํฐ ์์ฒญ์ ๊ถํ์ ๋ฐ๋ ๊ณผ์
์ฒซ ๋ฒ์งธ ๊ณผ์ ์ User๊ฐ OAuth๋ก ์ธ์ฆํด ์ฃผ๋ ๊ธฐ๊ด(๋ค์ด๋ฒ, ์นด์นด์ค ๋ฑ)์ ์ธ์ฆ์ ๋ฐ์์ ๊ทธ ์ธ์ฆ์ ๋ด ํํ์ด์ง๋ก ์ฝ๋ฐฑ ํ๋ ๊ณผ์ ์ด๋ค.
๋ ๋ฒ์งธ ๊ณผ์ ์ ๊ทธ ์ฝ๋ฐฑ ์ฝ๋๋ฅผ ์ด์ฉํ์ฌ User์ ์ ๋ณด๋ฅผ ๋ด ํํ์ด์ง๊ฐ ์์ฒญํ์ฌ User ์ ๋ณด๋ฅผ ๋ฐ์ ์ ์๊ฒ ํ๋ ๊ณผ์ ์ด๋ค.
๊ธฐ์กด์ ๋ก๊ทธ์ธ ๊ณผ์
User๊ฐ ๋ด๊ฐ ๋ง๋ ํํ์ด์ง์ ๋ก๊ทธ์ธ์ ํ๋ค๊ณ ์๊ฐํ์.
๊ทธ๋ ๋ค๋ฉด User๊ฐ ํด๋ผ์ด์ธํธ๊ฐ ๋๊ณ ๋ด๊ฐ ๋ง๋ ํํ์ด์ง๊ฐ ์๋ฒ๊ฐ ๋๋ค.
ํด๋ผ์ด์ธํธ์ธ User๊ฐ ๋ก๊ทธ์ธ์ ๋ํ ์์ฒญ์ ํด์ฃผ๋ฉด ์๋ฒ์ธ ํํ์ด์ง๊ฐ ๋ก๊ทธ์ธ ์๋ต์ ํด์ฃผ๋ ๊ณผ์ ์ด๋ค.
OAuth ๋ก๊ทธ์ธ ๊ณผ์ - ๊ตฌ์ฑ
OAuth์ ๋ก๊ทธ์ธ์ ์์๋ณด๊ธฐ ์ ์ ๊ตฌ์ฑ์ ์ดํด๋ด์ผ ํ๋ค.
๊ธฐ์กด์ ๋ก๊ทธ์ธ๊ณผ๋ ๋ค๋ฅด๊ฒ ์๋์ ๊ฐ์ด ์ด๋ฃจ์ด์ง๋ค.
- ์ ์ -> ๋ฆฌ์์ค ์ค๋(๋ฆฌ์์ค : ๊ฐ์ธ ์ ๋ณด)
- ๋ด ํํ์ด์ง -> ํด๋ผ์ด์ธํธ(API ์๋ฒ์ ํด๋ผ์ด์ธํธ)
- ๋ค์ด๋ฒ, ์นด์นด์ค ๋ฑ์ API ์๋ฒ(์ธ์ฆ์ ํด์ฃผ๋ ์๋ฒ)
- ์ง์ ์๋ฒ -> ๋ฆฌ์์ค ์๋ฒ(๋ฆฌ์์ค : ๊ฐ์ธ ์ ๋ณด)
OAuth ๋ก๊ทธ์ธ ๊ณผ์ - 1. ์ฝ๋ฐฑ ๊ณผ์
User๊ฐ ๋ค์ด๋ ํธ๋ก OAuth๋ฅผ ์ฒ๋ฆฌํด ์ฃผ๋ API ์๋ฒ์ ๋ก๊ทธ์ธ ์์ฒญ์ ๋ณด๋ธ๋ค.
๋ก๊ทธ์ธ์ด ํ์ธ๋๊ณ , API ์๋ฒ์ ๋ํ ์ ์์ ์ธ ์ ๊ทผ์ด ์ด๋ฃจ์ด์ง๋ค๋ฉด ๋ด ํํ์ด์ง๋ก ๋ฆฌ๋ค์ด๋ ํธ(์ฝ๋ฐฑ) ํ ์ฝ๋ ๊ฐ์ ์ ๋ฌํด ์ค๋ค.
๋ด ํํ์ด์ง์์ ์ฝ๋๊ฐ์ด ์ ์์ ์ธ์ง ํ์ธํ๊ณ ์ธ์ฆ๋ฐ์๋ค๋ ๊ฒ์ ์๊ฒ ๋๋ค.
์ด๋ ๊ฒ ํ๋ฉด ์ฒซ ๋ฒ์งธ ๊ณผ์ ์ธ ์ธ์ฆ์ฒ๋ฆฌ๊ฐ ์๋ฃ๋์๋ค.
OAuth ๋ก๊ทธ์ธ ๊ณผ์ - 2. Access Token
๋ด ํํ์ด์ง๋ ์ฝ๋ ๊ฐ์ API์ ๋ณด๋ธ ๋ค ๋ฐ์ดํฐ๋ฅผ ์กฐํํ ์ ์๋ ๊ถํ์ ์์ฒญํ๋ค.
API ์๋ฒ๋ ์ฝ๋๋ฅผ ์กฐํํ๊ณ ๊ฐ์ด ์ ์์ด๋ผ๋ฉด Access Token
์ ์ ํด์ค๋ค.
๋ด ํํ์ด์ง๋ Access Token
์ผ๋ก ๊ถํ์ ๋ถ์ฌ๋ฐ์์ผ๋ฏ๋ก, User์ ์ ๋ณด์ ์ ๊ทผํ ์ ์๋ ๊ถํ์ ์ป๋ ๊ฒ์ด๋ค.
์ด์ ๊ฐ์ด OAuth๋ ์นด์นด์ค๋ ๋ค์ด๋ฒ ๊ฐ์ ์ฌ์ดํธ์ ๊ฐ์ธ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๋ ์ ์ (๋ฆฌ์์ค ์ค๋)๊ฐ ๋ด ํํ์ด์ง์๊ฒ ์นด์นด์ค๋ ๋ค์ด๋ฒ ๊ฐ์ ์ฌ์ดํธ์ ์ ๋ณด๋ฅผ ์กฐํํ ์ ์๋ ๊ถํ์ ์์ํด ์ฃผ๋ ๊ณผ์ ์ด๋ผ๊ณ ํ ์ ์๋ค.
์คํ๋ง ๊ณต์ OAuth
์คํ๋ง ๊ณต์ OAuth ์ฃผ์ฒด๋ facebook, google์ด๋ฉฐ OAtuh Client ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ง์ํด ์ฃผ์ด์ ๋ ํธํ๊ฒ ์ฐ๋ํ ์ ์๋ค.
์์ ๋ค๋ฅธ ๊ตญ๋ด์ ํด์ธ์ ์ฌ๋ฌ ์ฌ์ดํธ๋ค๋ ๋ฐ๋ก ์ฐ๋ํ๋ ๋ฐฉ๋ฒ์ด ์กด์ฌํ๋ค.
'Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Spring์ Security-UserDetails ๊ตฌํ (0) | 2022.03.11 |
---|---|
devtools ์ค์ (intellij) (0) | 2022.03.11 |
์คํ๋ง ์ํ๋ฆฌํฐ Authentication (0) | 2022.03.10 |
@Controller, @RestController return (0) | 2022.03.10 |
enum ํ์ฉ(RoleType) (0) | 2022.03.10 |