Today I Learn โ๐ผ
- ์ค๋ ํ๋ฃจ ๊ฐ์ฅ ์ธ์ ๊น์๋ ๋ฐฐ์์๋ ๋ญ๊ฐ ์์์ง?
- ๊ทธ ๋ฐฐ์๊น์ง ๋ค๊ฐ๊ฐ๋๋ฐ ์ด๋ค ์ด๋ ค์์ด ์์์ง?
- ๊ทธ ์ด๋ ค์์ ํด๊ฒฐํ๊ธฐ ์ํ ๋์ ์๋๋ค์ ๋ฌด์์ด ์์์ง?
- ๊ทธ ๊ณผ์ ์์ ๋๋ ๋ฌด์์ ๊นจ๋ฌ์๊ณ , ์ด๋ค ๊ฐ์ /์๊ฐ์ด ๋ค์์์ง?
- ์ด ์ํ์์ ์ดํ ๋ ๋์ ๋ด๊ฐ ๋๋ ค๋ฉด ๋ฌด์์ ๋ณด์ํ์ง?
Spring Security? OAuth2 ?
Spring Security
- ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณด์ ์ ๋ฐ์ ๊ด๋ฆฌํ๋ ๊ฐ๋ ฅํ ํ๋ ์์ํฌ
- OAuth2๋ฅผ ํฌํจํ ๋ค์ํ ์ธ์ฆ ๋ฐ ๊ถํ ๋ถ์ฌ ๋ฐฉ๋ฒ์ ์ง์
OAuth2
- ํน์ ํ ์ธ์ฆ ๋ฐ ๊ถํ ๋ถ์ฌ ์๋๋ฆฌ์ค์์ ์ฌ์ฉ๋๋ ํ์ค ํ๋กํ ์ฝ
Spring Security
- ๋ชฉ์ : Spring Security๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์ ๊ฑธ์น ๋ณด์ ์ค์ ์ ๋ด๋นํฉ๋๋ค. ์ธ์ฆ(authentication)๊ณผ ๊ถํ ๋ถ์ฌ(authorization) ๊ธฐ๋ฅ์ ํตํด ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณดํธํ๋ ๋ฐ ์ค์ ์ ๋ก๋๋ค.
- ๊ธฐ๋ฅ:
- ์ธ์ฆ(Authentication): ์ฌ์ฉ์๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๊ทผํ ๋ ์ฌ์ฉ์ ์ ๋ณด(ID์ ํจ์ค์๋ ๋ฑ)๋ฅผ ๊ฒ์ฆํฉ๋๋ค.
- ๊ถํ ๋ถ์ฌ(Authorization): ์ฌ์ฉ์๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ๋ด์ ๋ฆฌ์์ค๋ ๊ธฐ๋ฅ์ ์ ๊ทผํ ์ ์๋ ๊ถํ์ด ์๋์ง๋ฅผ ํ์ธํฉ๋๋ค.
- ๋ณด์ ํํฐ: ๋ค์ํ ๋ณด์ ํํฐ๋ฅผ ์ ๊ณตํ์ฌ ์์ฒญ์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ๋๋ฌํ๊ธฐ ์ ์ ๋ณด์ ๊ฒ์ฌ ๋ฐ ์ฒ๋ฆฌ๋ฅผ ์ํํฉ๋๋ค.
- ์ธ์ ๊ด๋ฆฌ: ์ธ์ ๊ธฐ๋ฐ ์ธ์ฆ๊ณผ ๊ด๋ จ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
- ๊ธฐํ ๋ณด์ ๊ธฐ๋ฅ: CSRF ๋ณดํธ, URL ์ ๊ทผ ์ ์ด, ๋ฉ์๋ ๋ณด์, ์ํธํ, ๋น๋ฐ๋ฒํธ ์ ์ฅ ๋ฑ.
OAuth2
- ๋ชฉ์ : OAuth2๋ ์ธ์ฆ ๋ฐ ๊ถํ ๋ถ์ฌ์ ํ์ค ํ๋กํ ์ฝ๋ก, ํนํ API์ ๊ฐ์ ๋ฆฌ์์ค ์๋ฒ์ ๋ํ ์ ๊ทผ ๊ถํ์ ์ ์ดํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ฃผ๋ก ์ 3์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉ์ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ฒ ๊ณต์ ํ ์ ์๋๋ก ํฉ๋๋ค.
- ๊ธฐ๋ฅ:
- ํ ํฐ ๊ธฐ๋ฐ ์ธ์ฆ: OAuth2๋ ์ก์ธ์ค ํ ํฐ(access token)์ ์ฌ์ฉํ์ฌ ๋ฆฌ์์ค ์๋ฒ์ ๋ํ ์ ๊ทผ ๊ถํ์ ๊ด๋ฆฌํฉ๋๋ค.
- ์ญํ :
- Resource Owner (์์ ์์ ์): ๋ฆฌ์์ค์ ๋ํ ์ ๊ทผ ๊ถํ์ ๋ถ์ฌํ๋ ์ฌ์ฉ์.
- Client (ํด๋ผ์ด์ธํธ): ์์ ์์ ์๋ก๋ถํฐ ๊ถํ์ ์ป์ด ๋ฆฌ์์ค ์๋ฒ์ ์ ๊ทผํ๋ ์ ํ๋ฆฌ์ผ์ด์ .
- Authorization Server (์ธ์ฆ ์๋ฒ): ์ฌ์ฉ์ ์ธ์ฆ์ ์ฒ๋ฆฌํ๊ณ ์ก์ธ์ค ํ ํฐ์ ๋ฐ๊ธํฉ๋๋ค.
- Resource Server (๋ฆฌ์์ค ์๋ฒ): ๋ณดํธ๋ ๋ฆฌ์์ค๋ฅผ ์ ๊ณตํ๋ ์๋ฒ, ํด๋ผ์ด์ธํธ๋ ์ก์ธ์ค ํ ํฐ์ ํตํด ์ ๊ทผํฉ๋๋ค.
- ๊ถํ ๋ถ์ฌ ์ ํ:
- Authorization Code Grant: ์น ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฃผ๋ก ์ฌ์ฉ๋๋ ๋ฐฉ์.
- Implicit Grant: ํด๋ผ์ด์ธํธ ์ชฝ์์ ํ ํฐ์ ์ง์ ๋ฐ๋ ๋ฐฉ์์ผ๋ก, ์ฃผ๋ก SPA์์ ์ฌ์ฉ.
- Resource Owner Password Credentials Grant: ์ฌ์ฉ์์ ID์ ํจ์ค์๋๋ฅผ ์ง์ ์ ๋ ฅํ์ฌ ํ ํฐ์ ๋ฐ๋ ๋ฐฉ์.
- Client Credentials Grant: ํด๋ผ์ด์ธํธ๊ฐ ์์ฒด ์๊ฒฉ ์ฆ๋ช ์ผ๋ก ๋ฆฌ์์ค ์๋ฒ์ ์ ๊ทผํ๋ ๋ฐฉ์
์ฐจ์ด์ ์์ฝ
- ์ค์ฝํ:
- Spring Security๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๋ฐ์ ์ธ ๋ณด์์ ๋ค๋ฃจ๋ ํ๋ ์์ํฌ์ ๋๋ค.
- OAuth2๋ ํน์ ๋ฆฌ์์ค์ ๋ํ ์ ๊ทผ ๊ถํ์ ๊ด๋ฆฌํ๊ธฐ ์ํ ํ์ค ํ๋กํ ์ฝ์ ๋๋ค.
- ์ฌ์ฉ ์ฌ๋ก:
- Spring Security๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์ ๋ณด์์ ์ค์ ํ๊ณ , ์ฌ์ฉ์ ์ธ์ฆ๊ณผ ๊ถํ ๋ถ์ฌ๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
- OAuth2๋ ์ธ๋ถ ์ ํ๋ฆฌ์ผ์ด์ ์ด API๋ฅผ ํธ์ถํ ์ ์๋๋ก ํ ํฐ์ ๋ฐ๊ธํ๊ณ , ์ด๋ฅผ ํตํด ๊ถํ์ ๋ถ์ฌํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
- ํตํฉ:
- Spring Security๋ OAuth2๋ฅผ ์ง์ํ๋ฉฐ, Spring Security OAuth2 ๋ชจ๋์ ํตํด OAuth2 ์ธ์ฆ๊ณผ ๊ถํ ๋ถ์ฌ๋ฅผ ๊ตฌํํ ์ ์์ต๋๋ค.
'Today I Learned' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก์ ํธ ์์ (0) | 2024.08.23 |
---|---|
API ์ค๊ณ ์์น (0) | 2024.08.20 |
Redis, Spring (0) | 2024.08.07 |
MSA, Spring Cloud (0) | 2024.08.06 |
DI, IoC (0) | 2024.07.30 |