![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpxB9Q%2Fbtrv4lflpRE%2F9dxa2id2IRKaQmbDFDMYeK%2Fimg.png)
SSO SSO(Single Sign On)๋ ํ ๋ฒ์ ๋ก๊ทธ์ธ์ผ๋ก ์ฌ๋ฌ ์๋น์ค์ ์ ๊ทผํ ์ ์๋ ํตํฉ ์ธ์ฆ ๋ฐฉ์์ ๋๋ค. ์๋น์ค์ ๊ท๋ชจ๊ฐ ์ปค์ง ๋ ์ฌ๋ฌ ์๋น์ค๋ฅผ ํตํฉ ๊ด๋ฆฌํ๊ธฐ ์ํด SSO๋ฅผ ์ฌ์ฉํฉ๋๋ค. SSO๋ฅผ ๊ตฌํํ ๋ ๋ค์๊ณผ ๊ฐ์ ๋ ๊ฐ์ง ํจํด์ด ์กด์ฌํ ์ ์์ต๋๋ค. 1. ์ธ์ฆ gateway ๋ฐฉ์ ๊ฐ ์๋น์ค์ ์ ๊ทผํ ๋ ์ด์ ๋ ์ด์ด์ ํตํฉ ์ธ์ฆ ์๋น์ค๊ฐ ์กด์ฌํ๋ ๋ฐฉ์์ ๋๋ค. User๋ SessionID๋ฅผ ๊ฐ์ง๊ณ ์๊ณ ํตํฉ ์ธ์ฆ ์๋น์ค๋ฅผ ํต๊ณผํ๋ฉด ํด๋น ์๋น์ค๋ฅผ ์ด์ฉํ ์ ์์ต๋๋ค. ์ด ๋ฐฉ์์ ๋จ์ ์ ๊ฐ ์๋น์ค๋ฅผ ์ด์ฉํ ๋๋ง๋ค ์ธ์ฆ ๊ณผ์ ์ ๊ฑฐ์ณ์ผ ํ๋ฉฐ ์ธ์ฆ ์๋น์ค ์์ฒด๊ฐ bottle neck์ด ๋ ์ ์๋ค๋ ๊ฒ์ ๋๋ค. 2. ์ธ์ฆ ํ ํฐ ๋ฐ๊ธ ๋ฐฉ์ ์ ์ ๋ ์ฐ์ ํตํฉ ์ธ์ฆ ์๋น์ค๋ฅผ ํตํด ํ ํฐ์ด๋ผ๋ ์ธ์ฆ ๋ํ ๋งค์ฒด..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcm0jnV%2Fbtrv6c9KNdV%2FNT7HYNRGXyg81Kmo3dcfz0%2Fimg.png)
์ธ์ฆ Best Case ๊ธฐ๋ณธ flow (OpenIDC) Best Case๋ผ๊ณ ์๊ฐํ๋ ์ธ์ฆ flow(OpenIDC)๋ฅผ ๋จผ์ ์ค๋ช ํ๊ฒ ์ต๋๋ค. ๋จผ์ , Auth Service๊ฐ ํ ์๋น์ค๊ฐ ์๋ ์์ฌ์ ์๋น์ค์ผ ๋๋ OAuth ๊ธฐ๋ฐ์ flow๊ฐ ํ์์์ด ๋ค์๊ณผ ๊ฐ์ด ์ํ์ค ๋ค์ด์ด๊ทธ๋จ์ด ๊ทธ๋ ค์ง๋๋ค. (ํ ์๋น์ค์ผ ๊ฒฝ์ฐ OAuth ๋ณด๊ธฐ) Client๊ฐ id(username)์ password๋ฅผ ์ ๋ ฅํ์ฌ ๋ก๊ทธ์ธํฉ๋๋ค. ๋ก๊ทธ์ธ ์์ฒญ์ BFF → Server → Auth Service๋ก ์ ํด์ง๋๋ค. ์ ๋ฌ๋ id์ password๋ก Auth Service์์ ์ธ์ฆํฉ๋๋ค. ์ธ์ฆ์ ์ฑ๊ณตํ๋ฉด access token, refresh token, id token ๋ฅผ Server๋ก ์ ๋ฌํฉ๋๋ค. Server๋ id token ์ d..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcdhwuQ%2FbtracJ2IN5r%2FOsK40l2J2e1SFpC5LcTYVK%2Fimg.png)
์ธ์ฆ ๋ฐฉ์ 1. API key๋ฅผ ํตํ ์ธ์ฆ ๊ณผ์ user๊ฐ login ์ ๋ณด๋ฅผ ์ ๋ ฅํ๋ค. Client๋ ์ด๋ฏธ Server์ ๋ฑ๋กํ API key๋ฅผ ๊ฐ์ง๊ณ ์๋ค. Client๋ user๊ฐ ์ ๋ ฅํ Login ์ ๋ณด๋ฅผ ๋ฐ์์ API key์ ํจ๊ป Login API๋ฅผ ์์ฒญํ๋ค. Server๋ API key๋ฅผ ํตํด ํด๋น Client๊ฐ ๋ฑ๋ก๋์ด์๋ ์ง๋ฅผ ๊ฒ์ฌํ๋ค. Sever๋ Login ์ ๋ณด๋ฅผ ํตํด ํด๋น User๊ฐ API๋ฅผ ์ฌ์ฉํ ์ ์๋ ์ง๋ฅผ ๊ฒ์ฌํ๋ค. ๋จ์ API key๋ ๋ชจ๋ Client๋ค์ด ๊ณตํต์ผ๋ก ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ ธ์ถ๋๋ฉด ์ ์ฒด API๊ฐ ๋ ธ์ถ๋๋ค. API key๋ ์๊ฐ์ด ๋ฌด์ ํ์ด๊ณ ํ ๋ฒ ๋ ธ์ถ๋๋ฉด API key ๋ณ๊ฒฝ ์ ๊น์ง ๊ณ์ ๋ ธ์ถ๋๋ค. 2. API Token์ ํตํ ์ธ์ฆ ๊ณผ์ user๊ฐ login ์ ๋ณด๋ฅผ ์ ..
Refresh token์ ์ฅ์ ๋ณธ์ธ์ ์๋ API ์์ฒญ ์ ๋งค๋ฒ Access Token์ ๋ฐ๊ธํ๋ ์์ผ๋ก API๋ฅผ ๊ตฌ์ฑํ์๋๋ฐ, ์ด๋ ๊ฒ ๊ตฌ์ฑํ ๊ฒฝ์ฐ ์ฌ์ฉ์๊ฐ ๋ง์์ง ์๋ก ์์คํ ๋ถํ๊ฐ ์ฆ๊ฐํ๋ค. ๋ฐ๋ผ์ Refresh Token์ ๋ฐ๊ธํ๋ ๊ฒ์ด ๋ซ๋ค. ๋ํ, refresh token์ด ์์ ๊ฒฝ์ฐ access token์ ์ ํจ ์๊ฐ์ ์งง๊ฒ ํ์ฌ ํ์ทจ ์ ๋น ๋ฅด๊ฒ ๋ฌดํจํ ์ํฌ ์ ์๋ค. Refresh token์ ๋์ Access Token์ ํตํด User๊ฐ request๋ฅผ ๋ณด๋ด๊ณ , ์ ํจ ์๊ฐ์ด ๋ง๋ฃ ๋์๋ค๋ ์๋ต์ ๋ฐ๋๋ค. User๋ Access Token๊ณ ํจ๊ป Refresh Token์ ์๋ฒ๋ก ๋ณด๋ธ๋ค. Refresh Token์ด ์ ํจํ๋ค๋ฉด ์ ํจ์๊ฐ์ด ๊ฐฑ์ ๋ Access Token์ด ์๋ก ๋ฐ๊ธ๋์ด User..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FM1Dmd%2FbtrabvwUHnr%2F0rY2gb17EBpX8bk6sgd6p1%2Fimg.png)
๊ฐ๋ ์ ๋ฆฌ ๋ด๊ฐ ์ ๊ณตํ๋ ์๋น์ค๋ฅผ Client, ๋ค๋ฅธ ์๋น์ค๋ฅผ Resource Server, ๋ ์๋น์ค๋ฅผ ๋ชจ๋ ์ด์ฉํ๋ ์ฌ์ฉ์๋ฅผ Resource Owner๋ผ๊ณ ์ ์ํ๋ค. ์ถ๊ฐ์ ์ผ๋ก Resource Server์์ ์ธ์ฆ์ ๋ด๋นํ๋ ์๋ฒ๋ฅผ ๋ฐ๋ก Authorization Server๋ผ๊ณ ํ๋ค. ์ด๋ ๊ฒ ์ฐํฉํด์ ์ธ์ฆ์ฒด๊ณ๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ federated Identity๋ผ๊ณ ๋ถ๋ฅธ๋ค. ๋ฐฐ๊ฒฝ Client๊ฐ Resource Server(google, facebook ๋ฑ)์ ์๋ Resource Owner์ ๊ณ์ ์ ์ ์ํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ด ์์๊น? Resource Server์ ๋ํ Resource Owner์ id, pw๋ฅผ ์ ๊ณต๋ฐ์ผ๋ฉด ๋ ์ข๊ฒ ์ง๋ง ๋ณด์ ์ ๋ขฐ ๋ฌธ์ ๊ฐ ์๋ค. ๋ฐ๋ผ์ oAuth๊ฐ ๋์๋ค. oAuth๋ฅผ ..
Comment