๋ง๊ฐํ ์ธ์ฆ/์ธ๊ฐ ์ฒ๋ฆฌ๋ฅผ ์ํ ์ต์ ์ ์ ํ!
์ ๋๋ก ๋ฐฐ์ฐ๋ ์คํ๋ง ์ํ๋ฆฌํฐ OAuth2 ๐
์คํ๋ง ์ํ๋ฆฌํฐ OAuth2?
Spring Security OAuth2๋ OAuth 2.0 Authorization Framework ํ์ค ๊ธฐ์ ์ฌ์์ ์ฑํํ์ฌ OAuth2 Client, Resource Server, Authorization Server ๊ตฐ์ผ๋ก ๋ถ๋ฅํ์ฌ API๋ฅผ ์ ๊ณตํ๊ณ ์์ต๋๋ค.
์ ํต์ ์ธ ์ธ์
๊ธฐ๋ฐ ์ธ์ฆ ๋ฐฉ์์ ๊ฐ๋ ฅํ ๋์
๊ณผ๊ฑฐ๋ถํฐ ํ์ฌ์ ์ด๋ฅด๊ธฐ๊น์ง ๋ ๊ฑฐ์ ์์คํ
์ ์ ํต์ ์ธ ์ธ์ฆ ๋ฐ ์ธ๊ฐ ๋ฐฉ์์ผ๋ก ์ธ์
/์ฟ ํค๋ฅผ ํ์ฉํ ๊ธฐ์ ์ ๋ง์ด ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์์คํ
์ ๊ท๋ชจ๊ฐ ์ปค์ง๊ณ ๋ชจ๋ฐ์ผ, ํ๋ธ๋ฆฟ, PC, IOT ๋ฑ ๋ค์ํ ๊ธฐ๊ธฐ์ ์ธ์ฆ ์ฒ๋ฆฌ๋ฅผ ํ๋ ๋ฐ ์์ด ์ธ์
๊ณต์ ๋ฌธ์ ๋ ์๋ฒ ์์ ๋ถ๋ด, ๋ณด์ ์์ ์ฑ, ๋ณต์กํ ์ํคํ
์ฒ ๊ตฌ์ฑ ๋ฑ ๊ธฐ์กด ์ธ์
๋ฐฉ์์ ์ธ์ฆ ๊ตฌ์ฑ์ด ์ฌ๋ฌ ๋ฌธ์ ์ ํ๊ณ๋ฅผ ์ง๋ ๊ฒ์ผ๋ก ์ธ์๋๊ณ ์์ต๋๋ค.
ํนํ ๋ชจ๋๋ฆฌํฑ์ด ์๋ MSA ๋ฐฉ์์ ์ธํ๋ผ๊ฐ ์ ์ ์ถ์ธ๊ฐ ๋๊ณ ์๋ ํ์์ ์์๋ ๋๋์ฑ ์ธ์
๊ธฐ๋ฐ ์ธ์ฆ๋ฐฉ์์ด ํจ์จ์ ์ธ ๋์์ด ๋์ง ๋ชปํ๋ ๊ฒ๋ ์ฌ์ค์
๋๋ค.
์ด์ ์ ํ๊ณ์ ๊ณผ ๋ฌธ์ ๋ค์ ํด๊ฒฐํ๊ธฐ ์ํ ๋ฐฉ์์ผ๋ก ์ธ์
์ด ์๋ ํ ํฐ ๋ฐฉ์์ผ๋ก ์ธ์ฆ/์ธ๊ฐ์ฒ๋ฆฌ๋ฅผ ํ๊ธฐ ์ํ ํ์์ฑ์ด ๋๋๋์ด OAuth, JWT์ ๊ฐ์ ์ธ์ฆ ์ฒ๋ฆฌ ๊ธฐ์ ๋ค์ด ํ์ํ์ต๋๋ค. ์ด๋ฆฌํ์ฌ ๊ธ๋ก๋ฒ ๊ธฐ์
์ธ ๊ตฌ๊ธ, ํ์ด์ค๋ถ, ๊นํ์์ ์๋น์คํ๋ OAuth ์๋น์ค๋ฅผ ํ์ฉํด ๋์ฑ ๊ฐ๊ฒฐํ๊ณ ๊ฐ๋ ฅํ ์ธ์ฆ/์ธ๊ฐ ์ฒ๋ฆฌ๋ฅผ ํ ์ ์๊ฒ ๋์์ต๋๋ค.
๋ณธ ๊ฐ์๋ ์คํ๋ง ์ํ๋ฆฌํฐ OAuth2 ์ง์์ ์ฒ์ ์ ํ๋ ์
๋ฌธ์๋ถํฐ ๊ธฐ์ด์ ์ธ ์ง์์ด๋ ์ฌ์ฉ ๊ฒฝํ์ ์์ง๋ง ์ข ๋ ๊น์ด ์๋ ์ง์ ์ต๋๊ณผ ์คํ๋ง ์ํ๋ฆฌํฐ OAuth2์ ํต์ฌ ์๋ฆฌ, ๋ด๋ถ ๊ตฌ์กฐ, ๋์ ๋ฐฉ์ ๋ฑ์ ์ฌ๋ ์๊ฒ ์ดํดํ๊ณ ์ด๋ฅผ ์์ฉํ๊ณ ์ ํ๋ ์ค~๊ณ ๊ธ์ ๋ถ๋ค์ ์ํด ์ ์๋์์ต๋๋ค.
์คํ๋ง ์ํ๋ฆฌํฐ OAuth
ํต์ฌ ์ดํด ๊ฐ์๋
๐
๋จ์ํ API ์ฌ์ฉ๋ฒ๊ณผ ๋ฌธ๋ฒ๋ง์ ํ์ตํ์ง ์์ต๋๋ค. ์ธ๊ฐ ๊ธฐ์ ์ ์๋ฆฌ์ ๊ตฌ์กฐ๋ฅผ ํ ๋๋ก ํต์ฌ ๊ธฐ์ ์ ๋ํ ์ดํด๋ฅผ ๋์
๋๋ค.
๐
์คํ๋ง ์ํ๋ฆฌํฐ OAuth2๊ฐ ์ด๋ค ๊ตฌ์กฐ๋ก ๋์ํ๋์ง ์ ํํ ํ๋ฆ๋ค์ ์ดํดํ๊ณ ์๋ฆฌ๋ฅผ ํ์
ํ๋๋ก ํฉ๋๋ค.
๐งฐ
์คํ๋ง ์ํ๋ฆฌํฐ OAuth2๊ฐ ์ ๊ณตํ๋ ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ ํ์ฅํ์ฌ ์ปค์คํฐ๋ง์ด์งํ๋ ์ญ๋์ ๊ธฐ๋ฅผ ์ ์์ต๋๋ค.
โ
์คํ๋ง ์ํ๋ฆฌํฐ OAuth2์ ๊ธฐ์ ์ ์ด๋ป๊ฒ ์ค๋ฌด์ ์ผ๋ก ํ์ฉํ ์ ์์์ง์ ๋ํ ๊ฐ๊ฐ์ ์ตํ๊ฒ ๋ฉ๋๋ค.
์ฃผ์ ํ์ต ๋ด์ฉ
๐ก ๋ณธ ๊ฐ์๋ OAuth 2.0 ํ์ค ๊ธฐ์ ๊ณผ ์ด๋ฅผ ๋ฐํ์ผ๋ก ํ ์คํ๋ง ์ํ๋ฆฌํฐ OAuth2์ ํต์ฌ ๊ฐ๋
์ธ OAuth2 Client, Resource Server, Authorization Server์ ์ธ ๊ฐ์ง ์ถ์ ์ค์ฌ์ผ๋ก ์์
์ ์งํํฉ๋๋ค.
1) OAuth 2.0 Authorization Framework
RFC ํ์ค ๊ธฐ์ ์ธ OAuth 2.0 ์ธ๊ฐ ํ๋ ์์ํฌ์ ์ ๋ฐ์ ์ธ ๊ฐ๋
๊ณผ ์๋ฆฌ, ๊ตฌ์กฐ ๋ฑ์ ๋ด์ฉ์ ์ดํด๋ด
๋๋ค.
์คํ๋ง ์ํ๋ฆฌํฐ OAuth2์ ๋ณธ๊ฒฉ์ ์ธ ๊ธฐ์ ์ ํ์ตํ๊ธฐ์ ์์ OAuth 2.0 ์ ํ์ค ๊ธฐ์ ์ ๋ํ ๊ธฐ์ด์ ๊ธฐ๋ณธ์ ์ธ ์ด๋ก ์ ๋จผ์ ์ดํดํ๊ณ , ์ค์ต์ ํตํด ์ ํํ ๊ฐ๋
์ ์์งํจ์ผ๋ก์ ์คํ๋ง ์ํ๋ฆฌํฐ OAuth2์ ๋ด์ฉ์ ์ด๋ ค์ ์์ด ๋ฐ๋ผ๊ฐ ์ ์๋๋ก ํฉ๋๋ค.
2) OAuth2 Client
OAuth 2.0 ์ ํด๋ผ์ด์ธํธ ๋ชจ๋๋ก์ ํด๋ผ์ด์ธํธ์์ ์ธ๊ฐ ์๋ฒ์ ์ฐ๋ํ ์ ์๋ ์ฌ๋ฌ ์ ํ์ ๊ถํ ๋ถ์ฌ ํ์
๊ณผ ์์ฒญ API๋ฅผ ์๊ฐํ๋ฉฐ ์ธ๊ฐ์๋ฒ๋ก๋ถํฐ ๋ฐ๊ธ๋ฐ์ ํ ํฐ์ ์ฌ์ฉํ์ฌ ๋ฆฌ์์ค ์๋ฒ๋ก์ ์ ๊ทผ์ ์ด๋ฅผ ์ด๋ป๊ฒ ๊ตฌํํ๋๊ฐ์ ๋ํ ๋ด์ฉ์ ํ์ตํฉ๋๋ค.
๋ํ ๊ตฌ๊ธ, ํ์ด์ค๋ถ, ๊นํ, ๋ค์ด๋ฒ , ์นด์นด์ค ๋ฑ OAuth 2.0 Authorization Server ์๋น์ค ์ ๊ณต์์์ ์ฐ๋์ ํตํด ์์
๋ก๊ทธ์ธ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ์๊ฐํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ธ์ฆ ํ๋กํ ์ฝ์ธ OpenID Connect ๋ฅผ ์๊ฐํ๋ฉฐ ์ธ์ฆ ์ฒ๋ฆฌ๋ฅผ ์ํ ๋ค์ํ ์ต์
์ค์ ๋ฐฉ๋ฒ๊ณผ ํ๋ฆ์ ์ดํดํฉ๋๋ค.
3) OAuth2 Resource Server
์ฌ์ฉ์์ ์์์ ๋ณดํธํ๊ณ ์๋ ์๋ฒ๋ก์ API ์๋ฒ์ ์ญํ ์ ์ํํ๊ฒ ๋ฉ๋๋ค. ๋ฆฌ์์ค ์๋ฒ๊ฐ ์์์ ๋ณดํธํ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ณด๊ณ Access Token์ ํฌํจํ ์์ฒญ์ ๋ํด์ ํ ํฐ์ ์ ํจ์ฑ์ ๊ฒ์ฆํ๋ ๋ฐฉ๋ฒ๊ณผ ๊ถํ ์ฒด๊ณ๋ฅผ ์ ์ดํ๋ ํ๋ฆ์ ๋ํด ํ์ตํฉ๋๋ค.
OAuth2 ์๋น์ค ์ ๊ณต์์์ ๋ฐ๊ธํ๋ Access Token์ด JWT ํฌ๋งท์ผ๋ก ์์ฑ๋ ํ ํฐ์ผ ๊ฒฝ์ฐ Scope(๋ฒ์) ๋ฅผ ์ถ์ถํ๋ ๋ด์ฉ์ ์ดํด๋ณด๊ณ ๋ฆฌ์์ค ์๋ฒ์์ Access Token์ ํฌํจ๋ Scope๋ฅผ ๋ถ์ํ์ฌ ๊ถํ ์ฌ๋ถ๋ฅผ ์ด๋ป๊ฒ ํ๋ณํ๋์ง ๋ด์ฉ์ ํ์ตํฉ๋๋ค.
4) OAuth2 Authorization Server
์์ค์๋ ์คํ์์ค๋ฅผ ํฌํจํ ๋ค์ํ Authorization Server ์์ฉ ์ ํ ๋ฐ ์๋น์ค๊ฐ ์์ต๋๋ค. ์คํ๋ง ์ํ๋ฆฌํฐ ๊ฐ๋ฐํ์์ Authorization Server ํ๋ ์์ํฌ ํ๋ก์ ํธ๋ฅผ ์ค๋จํ๊ธฐ๋ ํ์ง๋ง ์๋ง์ ๊ฐ๋ฐ์๋ค์ ๋น๋ฐ์น๋ ์์ฒญ์ผ๋ก Authorization Server ํ๋ก์ ํธ๊ฐ ์์ ํ ์๋ก์ด ์ค๊ณ๋ก ๋ค์๊ธ ํ์ํ์ต๋๋ค.
๋ณธ ๊ฐ์์์๋ ์๋ก์ด ์ํคํ
์ฒ๋ก ์ฌํ์ํ Authorization Server ํ๋ก์ ํธ๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ฐ์๋ฅผ ์ ์ํ์ต๋๋ค. OAuth2 Client์ Resource Server์์ ์ฐ๋์ ํตํ ์ธ๊ฐ์๋ฒ๋ก์์ ๊ธฐ๋ฅ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ดํด๋ณด๋ฉฐ ์์ฒด์ ์ผ๋ก ์ธ๊ฐ ์๋ฒ๋ฅผ ๊ตฌ์ถํ์ฌ ์๋น์คํ ์ ์๋ ์ง์์ ๊ฐ์ถ๋๋ก ํ๋ ๋ฐ ์ค์ ์ ๋์์ต๋๋ค.
Authorization Server ๊ธฐ๋ฅ์ ์ฒ๋ฆฌํ๋ ์ฃผ์ ํด๋์ค๋ฅผ ์์๋ณด๊ณ ์ปค์คํฐ๋ง์ด์งํ ์ ์๋ ๋ฐฉ๋ฒ์ ์์๋ด
๋๋ค. ๋ํ OAuth 2.0 ํ์ค ์๋ ํฌ์ธํธ์ ๋ํ ์ฌ์์ ์ดํด๋ณด๊ณ ๊ฐ ์๋ํฌ์ธํธ๋ง๋ค ์ค์ ๋ ํํฐ๋ค์ ๊ตฌ์กฐ์ ์ฒ๋ฆฌ ๊ณผ์ ์ ํ์ตํฉ๋๋ค.

์ํคํ
์ฒ/ํ๋ฆ/์๋ฆฌ๋ฅผ ๋๋ฃจ ์ดํดํ ์ ์์ต๋๋ค.
์คํ๋ง ํ๋ ์์ํฌ ํ๋ก์ ํธ ๊ฐ์ด๋ฐ ์คํ๋ง ์ํ๋ฆฌํฐ๋ ๊ธฐ์ ์ํคํ
์ฒ, ๋์์๋ฆฌ, ํ๋ฆ ์ดํด ๋ฑ์ ๋ด๋ถ ์์ค ๋ ๋ฒจ์ ๊ตฌํ์ ๋ํ ์ ๋ฐ์ ์ธ ์ดํด๊ฐ ๊ต์ฅํ ์ค์ํฉ๋๋ค.
์ฃผ์ด์ง API ์์ฃผ๋ก ์ฌ์ฉํ๋ค๊ฐ ์๊ธฐ์น ๋ชปํ ์ค๋ฅ๋ ์ด์์ ๋ถ๋ช์น๊ฒ ๋๋ฉด ๊ตฌ๊ธ์ ๊ฒ์ํด์ ํด๊ฒฐ๋ฐฉ์์ ์ฐพ๊ธฐ ๋ง๋ จ์
๋๋ค. ๊ทธ๋ฌ๋ ์คํ๋ง ์ํ๋ฆฌํฐ OAuth2 ์ ๊ดํ ์๋ฃ๋ค์ด ๋ง์ง ์๊ณ ๋๋ถ๋ถ ๋น์ทํ ์ฌ๋ก๋ค์ด ๋ฐ๋ณตํด์ ๋์ค๋ ์์ค์ด๊ธฐ ๋๋ฌธ์ ์คํ๋ง ์ํ๋ฆฌํฐ OAuth2์ ๋ด๋ถ ๊ตฌ์กฐ์ ๋์ ์๋ฆฌ๋ฅผ ์ ํํ๊ฒ ์ดํดํ์ง ๋ชปํ๊ฑฐ๋ ๋ถ์์ด ๋์ง ๋ชปํ๋ค๋ฉด ์๋น์ค ์ด์์ ๋ง์ ์ด๋ ค์์ ๊ฒช๊ฒ ๋ฉ๋๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ด๋ฒ ๊ฐ์๋ ๋ค์ํ ๋์ ๋ฐ Flow์ ๋๋ฒ๊น
์ ํตํ ์ ํํ๊ณ ์์ธํ ์ค๋ช
์ ํตํด ๋จ์ํ API ์ฌ์ฉ๋ฒ๊ณผ ๊ธฐ๋ฅ ์์ ๋ฅผ ๋์ด ์คํ๋ง ์ํ๋ฆฌํฐ OAuth2์ ๊ตฌ์กฐ์ ํ๋ฆ์ ์์ ํ๊ฒ ๋ถ์ํ๊ณ ์ดํดํจ์ผ๋ก์ ์ด๋ค ์ํฉ์์๋ ์ ์ฐํ ๋์ฒ๊ฐ ๊ฐ๋ฅํ ์ง์์ ๊ฐ์ถ๋๋ก ํ๋ ๋ฐ ์ค์ ์ ๋๊ณ ์์ต๋๋ค. ์ด๋ ๋ณธ ๊ฐ์ฌ๊ฐ ๊ฐ์คํ ๊ฐ์๋ค์ ํจํด ๋ฐ ๊ณตํต์ ์ธ ํน์ง์ด๋ผ ํ ์ ์์ต๋๋ค.
๊ฐ์ ๊ตฌ์ฑ ๋ฐ ์์ธ ์ปค๋ฆฌํ๋ผ
Part 1. ์คํ๋ง ๋ถํธ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ๋ฐํ๋ ์คํ๋ง ์ํ๋ฆฌํฐ
์คํ๋ง ์ํ๋ฆฌํฐ์ ํต์ฌ ๊ฐ๋
์ธ ์ธ์ฆ๊ณผ ์ธ๊ฐ์ ๋ ์ถ์ ์ค์ฌ์ผ๋ก ๊ฐ์๊ฐ ์งํ๋ฉ๋๋ค. ์คํ๋ง ์ํ๋ฆฌํฐ์ ๊ธฐ์ด์ ๊ธฐ๋ณธ์ด ๊ต์ฅํ ์ค์ํ๊ธฐ ๋๋ฌธ์ Part. 1์์๋ ์คํ๋ง ์ํ๋ฆฌํฐ๋ฅผ ๊ตฌ์ฑํ๋ ํต์ฌ ๊ตฌ์กฐ ๋ฐ ์ธ์ฆ, ๊ทธ๋ฆฌ๊ณ ์ธ์ฆ๊ณผ ๊ด๋ จ๋ ์ฃผ์ ํญ๋ชฉ๋ค์ ๋ํ ์ ํํ ๊ฐ๋
์ ์ดํดํ๊ณ ์์ ์ ์ค์ต์ ํตํด ์ค๋ฌด์ ์ธ ๊ฐ๋ฐ์ ๋์์ด ๋๋๋ก ๊ตฌ์ฑํ์ต๋๋ค.
Part. 1์ ์๊ฐํ๊ฒ ๋๋ฉด ์คํ๋ง ์ํ๋ฆฌํฐ์ ์ ์ฒด์ ์ธ Fundamentals์ ํ์คํ๊ฒ ์ ๋ฆฝํจ๊ณผ ๋์์ ๋ ๋์๊ฐ ๋ณด์ ์์คํ
๊ตฌ์ถ ์ ์ํ๋ฆฌํฐ ๊ธฐ๋ณธ๊ตฌ์กฐ๋ฅผ ํ์ฅํ๊ณ ์์ฉ์ด ๊ฐ๋ฅํ ์์ค์ ์ญ๋์ ๊ธฐ๋ฅด๊ฒ ๋ฉ๋๋ค.
Part 2. ์คํ๋ง ๋ถํธ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ๋ฐํ๋ ์คํ๋ง ์ํ๋ฆฌํฐ OAuth2
OAuth2์ ๊ธฐ๋ณธ ๊ฐ๋
๊ณผ ํ๋ฆ์ ์ ํํ ์ดํด์ ์คํ๋ง ์ํ๋ฆฌํฐ OAuth2์ ํต์ฌ ๋ชจ๋์ธ OAuth2 Client, Resource Server, Authorization Server์ ๊ธฐ์ ์ ๋ํด ํ์ตํฉ๋๋ค. Part. 2๋ฅผ ์ํํ๊ฒ ํ์ตํ๊ธฐ ์ํด์๋ Part. 1์ ๊ธฐ๋ณธ ๋ด์ฉ์ ๋ํ ์ดํด๊ฐ ํ์์ด๊ธฐ ๋๋ฌธ์ ๋ฐ๋์ ์ฌ์ ์ ์ง์์ ์ต๋ํ ํ ์๊ฐํด์ผ ํฉ๋๋ค.
Part. 2์์๋ OAuth2์ ๊ดํ ๋ค์ํ ๊ธฐ์ ๋ค์ด ๋ณตํฉ์ ์ผ๋ก ๊ตฌ์ฑ๋์ด ์๊ธฐ ๋๋ฌธ์ ๋ฐฉ๋ํ OAuth2 ๊ด๋ จ ๊ฐ๋
์ ์ถฉ๋ถํ ์ดํดํ๊ณ ์ด๋ฅผ ๋ฐํ์ผ๋ก ํด๋ผ์ด์ธํธ ์ฑ, ๋ฆฌ์์ค ์๋ฒ, ์ธ๊ฐ์๋ฒ ์ํธ๊ฐ์ ์ฐ๋ ๊ณผ์ ์ ์์ธํ๊ณ ๊น์ด ์๊ฒ ๋ถ์ํ๊ณ ์ดํด๋ด
๋๋ค.
Spring Security Fundamentals
์คํ๋ง ์ํ๋ฆฌํฐ์ ํต์ฌ ๊ธฐ์ด๋ฅผ ์ดํด๋ด
๋๋ค. ์ด๊ธฐํ ๊ณผ์ ์ ๋ํ ์์ธํ ๋ด์ฉ๊ณผ ์๋ฆฌ๋ฅผ ์์๋ณด๊ณ HttpBasic, Cors์ ๊ฐ์ ์์๋ฅผ ๋ค๋ฃน๋๋ค.
OAuth 2.0 Authorization Framework
OAuth 2.0 ํ์ค ๊ธฐ์ ์ ๋ํ ์์ธ ์ฌ์์ ๋ํด ํ์ตํฉ๋๋ค. OAuth 2.0์์ ํํ๋๋ ๋ค์ํ ์ฉ์ด๋ฅผ ๋จผ์ ์ดํดํ๊ณ ๊ถํ๋ถ์ฌ ํ๋ฆ์ ํ์
์ ๋ํ ๊ฐ๋
์ ๋ฆฌ์ keycloak ์คํ ์์ค๋ฅผ ํ์ฉํด ์ธ๊ฐ ํ๋ ์์ํฌ์ ์ ๋ฐ์ ์ธ ํ๋ฆ์ ์ดํดํฉ๋๋ค.
OAuth 2.0 Client - oauth2Login()
ํด๋ผ์ด์ธํธ ์ฑ์ ๊ธฐ๋ฅ์ ์๋ํํ๋ฉฐ ๊ถํ๋ถ์ฌ ํ๋ฆ์ ํ์
์ธ Authorization Code ๋ฐฉ์์ผ๋ก ์ธ๊ฐ์๋ฒ์์ ์ฐ๋๋ฐฉ๋ฒ์ ํ์ตํ๋ฉฐ ์ฌ์ฉ์ ์น์ธ๊ณผ ์น์ธ ์ดํ Access Token ์ ๋ฐ์์ ์ธ์ฆ/์ธ๊ฐ ์ฒ๋ฆฌ์ ์ด๋ฅด๊ธฐ๊น์ง์ ์ ๊ณผ์ ์ ์ดํด๋ณด๊ณ ๋ด๋ถ๊ตฌ์กฐ์ ๋ํด ํ์ตํ๊ฒ ๋ฉ๋๋ค.
OAuth 2.0 Client - oauth2Client()
oauth2Login() API์์ ์ ๊ณตํ๋ ๊ถํ๋ถ์ฌ ํ๋ฆ์ ํ์
์ธ Authorization Code ์ธ์ Resource Owner Password์ Client Credentials ํ์
์ผ๋ก ์ธ๊ฐ์๋ฒ์ ์ฐ๋ํ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ณด๋ฉฐ DefaultOAuth2AuthorizedClientManager, @RegisteredOAuth2AuthorizedClient์ ์ฌ์ฉ๋ฐฉ๋ฒ์ ์์๋ณด๊ณ ์ด๋ฅผ ํตํด ํด๋ผ์ด์ธํธ ๊ถํ๋ถ์ฌ ํ๋ฆ์ ์ดํดํฉ๋๋ค.
OAuth 2.0 Client - OAuth 2.0 Social Login
OAuth2 ์๋น์ค ์ ๊ณต์๋ก ๊ตฌ๊ธ, ํ์ด์ค๋ถ, ๊นํ, ๋ค์ด๋ฒ, ์นด์นด์ค ๋ฑ์ด ์๋๋ฐ ์ด์ค ๊ตฌ๊ธ, ๋ค์ด๋ฒ, ํคํด๋ก์ ์ฌ์ฉํ์ฌ ๋ก๊ทธ์ธ ์ธ์ฆํ๋ ๋ฐฉ์๊ณผ ์ธ์ฆ ์ดํ ํ์์ฒ๋ฆฌ์ ๋ํ ๊ตฌํ๋ฐฉ๋ฒ์ ์ดํด๋ด
๋๋ค.
OAuth 2.0 Resource Server API - jwt()
๋ฆฌ์์ค ์๋ฒ๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ๊ณผ Access Token ์์ฒญ์ ์ฒ๋ฆฌํ๋ JwtDecoder์ ๊ธฐ๋ฅ์ ์ดํด๋ณด๊ณ ํ ํฐ ๊ฒ์ฆ์ ์ฑ๊ณต์ดํ ์์ฑ๋๋ ์ธ์ฆ๊ด๋ จ ๊ฐ์ฒด์ ๊ตฌ์กฐ์ ์ฌ์ฉ๋ฐฉ๋ฒ์ ํ์ตํฉ๋๋ค. ๋ํ Access Token์ ์ ํจ์ฑ์ ๊ฒ์ฆํ ๋ ์ฌ์ฉ๋๋ MAC & RSA ์๊ณ ๋ฆฌ์ฆ ๋ฐฉ์์ด ๋ฌด์์ด๋ฉฐ ์ด๋ค ์ฒ๋ฆฌ์ ์ฐจ์ ์ํด ๊ฒ์ฆ์ด ์ด๋ฃจ์ด์ง๋์ง ์ดํด๋ด
๋๋ค.
OAuth 2.0 Resource Server - ๋ฆฌ์์ค ์๋ฒ ๊ถํ ๊ตฌํ
Access Token ์์ฒญ์ ์ฒ๋ฆฌํ๋ ํํฐ์ JwtDecoder์ ์ํด ์ถ์ถ๋ Scope๋ฅผ ๊ถํ์ผ๋ก ๋ณํํ๊ณ ๋ณํ๋ ๊ถํ์ผ๋ก ์์์ ์ ๊ทผ์ฌ๋ถ๋ฅผ ์ ์ดํ๋ ๋ฐฉ๋ฒ์ ๋ํด ํ์ตํฉ๋๋ค.
OAuth 2.0 Resource Server - opaque()
์๊ฒฉ ํ ํฐ ๊ฒ์ฌ ํ๋ก์ธ์ค๋ก์ Access Token์ ํ์ฑํ ์ฌ๋ถ๋ฅผ ์ธ๊ฐ์๋ฒ์ ์ง์ ํต์ ํ์ฌ ์์๋ณด๋ ๋ฐฉ๋ฒ์ ํ์ตํฉ๋๋ค.
Spring Authorization Server - ์ฃผ์ ๋๋ฉ์ธ ํด๋์ค
์ธ๊ฐ์๋ฒ๋ฅผ ๊ตฌ์ฑํ๋ ์ฃผ์ ๋๋ฉ์ธ ํด๋์ค์ ์ข
๋ฅ์ ๊ฐ๋
, ์ญํ ๋ฑ์ ํ์ตํ๋ฉฐ ์ด ํด๋์ค๋ค์ด ์คํ๋ง MVC์์ ์ด๋ค ๋ฐฉ์์ผ๋ก ์ฐธ์กฐ ๋ฐ ํ์ฉ์ด ๊ฐ๋ฅํ์ง ํ์ตํฉ๋๋ค.
Spring Authorization Server - ์๋ํฌ์ธํธ ํ๋กํ ์ฝ
์ธ๊ฐ์๋ฒ์ ํต์ฌ ๊ธฐ๋ฅ์ธ ์ฌ๋ฌ ์ ํ์ ์๋ํฌ์ธํธ ํ๋กํ ์ฝ์ ๋ํด ํ์ตํฉ๋๋ค. ๊ถํ ๋ถ์ฌ ์์ฒญ์ ์์ํ ์๋ํฌ์ธํธ ๋ถํฐ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์์ฒญํ๋ ์๋ํฌ์ธํธ๊น์ง์ ์ ๊ณผ์ ์ ๋์๊ณผ ํ๋ฆ์ ํตํด ์์ธํ๊ฒ ์ดํด๋ณด๊ฒ ๋ฉ๋๋ค.
OAuth 2.0 Client + Resource Server + Authorization Server ์ฐ๋
์คํ๋ง ์ํ๋ฆฌํฐ์์ ์ ๊ณตํ๋ ๊ฐ OAuth2์ ๋ชจ๋๋ค์ ์ฐ๊ณ ๋ฐ ์ฐ๋ํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด๊ณ ์ด๋ฅผ ํตํด OAuth2 ์๋น์ค ์ ๊ณต์๋ก์์ ๊ธฐ๋ฅ์ ์ํํ๋ ๊ตฌ์ฒด์ ์ธ ํญ๋ชฉ๋ค์ ์์ ๋ฅผ ํตํด ์ดํด๋ณด๊ฒ ๋ฉ๋๋ค.
์ด ๊ฐ์๋ฅผ ๋ง๋
์ง์๊ณต์ ์๋ฅผ ์๊ฐํฉ๋๋ค.
์ ์์(leaven)
- ํ์ง ์๋ฐ ๊ฐ๋ฐ์
- SI/SM/์๋ฃจ์
/Mobile/Front&Back-end ์ ๋ค์ํ ํ๋ก์ ํธ ๊ฒฝํ
- Architect/PM/PL ๋ก์ ์ญํ ์ํ
- Github
ํจ๊ป ๋ณด๋ฉด ์ข์ ๊ฐ์