์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- ์ฒซ๊ธ์๋๋ฌธ์
- ๋ฐฑ์๋
- Spring Data JDBC
- CLI๋ช ๋ น์ด
- ์๋ฃ๊ตฌ์กฐ
- ์ ๋ค๋ฆญ์ค
- ๊ณ์ฐ๊ธฐ๋ง๋ค๊ธฐ
- HTML
- CSS
- ๊ฑฐ๋ญ์ ๊ณฑ
- ๋ฐฑ์ค์๊ณ ๋ฆฌ์ฆ
- java
- ์คํ๋ง
- ์๊ณ ๋ฆฌ์ฆ
- Spring Security
- ์ธํ ๋ฆฌ์ ์ด
- ๋ถํธ์บ ํ
- spring data jpa
- ์๋ฐ
- FilterChain
- ๋ฐ์ผ๋ฆฌ์ฝ๋ฉ
- ๋ฌธ์์ด๋ค์ง๊ธฐ
- ์ปฌ๋ ์ ํ๋ ์์ํฌ
- ๊ทธ๋ฆฌ๋
- ํ์ดํ๋ก๊ทธ๋๋ฐ
- Publishing
- ํ๊ณ
- ๊นํ๋ธ
- testing
- fibonacci
- Today
- Total
๋์ ๋ชจ์
067 | Spring Security - OAuth 2.0 Authentication ๋ณธ๋ฌธ
๐OAuth 2.0
๐งฉ OAuth 2.0์ด๋?
- ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ๋ณด์ ํ๊ณ ์๋ ์ ๋ขฐํ ๋งํ ์จ๋ ํํฐ ์ ํ๋ฆฌ์ผ์ด์ (GitHub, Google, ๋ฑ)์์ ์ฌ์ฉ์์ ์ธ์ฆ์ ๋์ ์ฒ๋ฆฌ → ์ ๊ทผ ๊ถํ์ ๋ํ ํ ํฐ ๋ฐ๊ธ → ํด๋น ํ ํฐ์ ์ด์ฉํด ์จ๋ ํํฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋น์ค๋ฅผ ์ฌ์ฉํ๊ฒ ํด์ฃผ๋ ๋ฐฉ์์ด๋ค. ํ์ง๋ง ์ฌ์ฉ์์ ์ ๋ณด๊ฐ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ฅ๋๋ ๊ฒ์ ๋ณํจ ์๋ค. Authentication์ ๋ค๋ฅธ ์๋น์ค์ ๋งก๊ธฐ๊ณ ํ ํฐ์ ๋ฐ์ ์ฌ ๋ฟ, Authorizaiton๋ ์ฌ์ ํ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ด ๊ด๋ฆฌํด์ผ ํ๋ค.
- OAuth๋ ๋ณด์๋ ์์ ์ ๋ฆฌ์์ค์ ์ ๊ทผํ๊ธฐ ์ํด ๊ถํ์ ๋ถ์ฌํด์ฃผ๋ ๊ฐ๋ฐฉํ ํ์ค ํ๋กํ ์ฝ์ ํ ์ข ๋ฅ์ด๋ค. ๋์ค์ ์ผ๋ก ๋ง์ด ์ฌ์ฉ์ค์ธ ์๋น์ค์์ ๊ด๋ฆฌํ๋ฏ๋ก, ์ฌ์ฉ์ ์ ์ฅ์์๋ ์์ ์ ์ ๋ณด๋ฅผ ๋ ธ์ถ์ํค์ง ์์๋ ํด๋น ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉํ ์ ์๋ค.
๐งฉ OAuth 2.0 ์ธ์ฆ ์ปดํฌ๋ํธ ์ญํ ๊ณผ ์ฉ์ด
- Resource Owner: ์ฌ์ฉํ ๋ฆฌ์์ค์ ์์ ์์ด๋ค.
- ๋ด๊ฐ ๊ตฌ๊ธ ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธํด์ ๋ค๋ฅธ ์๋น์ค๋ฅผ ์ด์ฉํ๊ณ ์๋ค๋ฉด ๋ด๊ฐ ๊ตฌ๊ธ ์๋น์ค Resource์ ๋ํ Resource Owner๊ฐ ๋๋ค.
- Client: Resource owner๋ฅผ ๋์ ํด ๋ณดํธ๋ ๋ฆฌ์์ค์ ์ก์ธ์คํ๋ ์ ํ๋ฆฌ์ผ์ด์
์ด๋ค.
- ๋ด๊ฐ ์บ๋ํฌ๋ฌ์ฌ์ฌ๊ฐ์์ ๊ตฌ๊ธ ์์ ๋ก๊ทธ์ธ์ ์ด์ฉํ๋ฉด ์บ๋ํฌ๋ฌ์ฌ์ฌ๊ฐ๊ฐ ํด๋ผ์ด์ธํธ์ด๋ค.
- Resource Server: user์ ๋ฆฌ์์ค๋ฅผ ๊ฐ๊ณ ์๋ ์๋ฒ๋ก, Client์ ์์ฒญ์ ์๋ฝํ๊ณ Resource Owner์๊ฒ ํด๋นํ๋ ๋ฆฌ์์ค๋ฅผ ์๋ตํ ์ ์๋ ์๋ฒ์ด๋ค.
- ์บ๋ํฌ๋ฌ์ฌ์ฌ๊ฐ๊ฐ ๊ตฌ๊ธํฌํ ์์ ๋ด Resource Owner์ ์ฌ์ง(Resource)์ ๊ฐ์ ธ์ค๋ฉด
๊ตฌ๊ธํฌํ ์๋น์ค ์ ๊ณต ์ ํ๋ฆฌ์ผ์ด์ == Resource Server
- ์บ๋ํฌ๋ฌ์ฌ์ฌ๊ฐ๊ฐ ๊ตฌ๊ธํฌํ ์์ ๋ด Resource Owner์ ์ฌ์ง(Resource)์ ๊ฐ์ ธ์ค๋ฉด
- Authorization Server: Client๊ฐ Resource Server์ ์ ๊ทผํ ์ ์๋ ๊ถํ์ ๋ถ์ฌํ๋ ์๋ฒ์ด๋ค.
- ๋ด๊ฐ(Resource Owner) ๊ตฌ๊ธ ๋ก๊ทธ์ธ ์ธ์ฆ์ ์ฑ๊ณตํ๋ฉด ์บ๋ํฌ๋ฌ์ฌ์ฌ๊ฐ(Client)๋ Authorization Server๋ก๋ถํฐ ๊ตฌ๊ธํฌํ ์ ์ ์ฅ๋์ด ์๋ ๋ด ์ฌ์ง(Resource)์ ์ ๊ทผํ ์ ์๋ ๊ถํ(Access Token)์ ๋ถ์ฌ๋ฐ๋๋ค.
- ๋ด๊ฐ(Resource Owner) ์บ๋ํฌ๋ฌ์ฌ์ฌ๊ฐ(Client)๋ฅผ ๊ตฌ๊ธ ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธํ๋ฉด
๊ตฌ๊ธ == Resource Server & Authorization Server
- Authorization Grant: Client๊ฐ ์๋ฒ์์ Access Token์ ์ป๊ธฐ ์ํ ์๋จ์ด๋ค.
- Grant type: ํด๋ผ์ด์ธํธ๊ฐ ์ก์ธ์ค ํ ํฐ์ ์ป๋ ๋ฐฉ๋ฒ์ด๋ค.
- ์ข ๋ฅ๋ก๋ Authorization Code Grant type, Implicit Grant Type, Client Credentials Grant Type, Resource Owner Credentials Grant Type์ด ์๋ค.
- Authorization Code: ์ก์ธ์ค ํ ํฐ์ ๋ฐ๊ธ๋ฐ๊ธฐ ์ ์ ํ์ํ ์ฝ๋์ด๋ค.
- Access Token: ๋ณดํธ๋ ๋ฆฌ์์ค์ ์ก์ธ์คํ๋ ๋ฐ ์ฌ์ฉ๋๋ credentials์ด๋ค. ์ด ํ ํฐ์ผ๋ก Resource Server์ ์์์ ์ ๊ทผํ ์ ์๋ค.
- Scope: ์ฃผ์ด์ง ์ก์ธ์ค ํ ํฐ์ ์ ๊ทผ ๊ถํ Scope ๋ด์์๋ง ์ก์ธ์คํ ์ ์๋ ๋ฆฌ์์ค์ ๋ฒ์์ด๋ค.
๐OAuth 2.0 ๋์ ๋ฐฉ์
Authorizsation Grant Type์ ๋ฐ๋ผ ์ธ์ฆ๋ฐ๋ ๋ฐฉ๋ฒ์ด ๋ค๋ฅด๋ค.
๐งฉ Authorisation Grant์ ๋ฐ๋ฅธ ์ธ์ฆ ์ฒ๋ฆฌ ๋ฐฉ์
๐ช Authorisation Code Grant
๊ฐ์ฅ ๋ง์ด ์ฐ์ด๊ณ ๊ธฐ๋ณธ์ด ๋๋ ๋ฐฉ์์ผ๋ก, ๊ถํ ๋ถ์ฌ ์น์ธ์ ์ํด ์์ฒด ์์ฑํ Authorisation Code๋ฅผ ์ ๋ฌํ๋ค.
- Resource Owner๋ Client(์ ํ๋ฆฌ์ผ์ด์ )์๊ฒ ์๋น์ค ์์ฒญ์ ์ ์กํ๋ค.
- Client๋ Authorisation Server์ Authorisation Code๋ฅผ ์์ฒญํ๋ฉด์ ๋ฏธ๋ฆฌ ์์ฑํ Client ID, Redirect URI, ์๋ต ํ์ ์ ํจ๊ป ์ ์กํ๋ค.
- Resource Owner๋ ๋ก๊ทธ์ธ ํ์ด์ง๋ฅผ ํตํด ๋ก๊ทธ์ธ์ ์งํํฉ๋๋ค.
- ๋ก๊ทธ์ธ์ด ํ์ธ๋๋ฉด Authorisation Server๋ Client์๊ฒ Authorisation Code๋ฅผ ์ ๋ฌํ๋ค.
(์ด ์ ์ ์์ฒญ๊ณผ ํจ๊ป ์ ๋ฌํ Redirect URI๋ก Code๋ฅผ ์ ๋ฌ) - Client๋ ์ ๋ฌ๋ฐ์ Authorisation Code๋ก Access Token ๋ฐ๊ธ์ ์์ฒญํ๋ค.
AccessToken์ ์์ฒญํ ๋ ๋ฏธ๋ฆฌ ์์ฑํ Client Secret, Redirect URI, ๊ถํ ๋ถ์ฌ ๋ฐฉ์, Authorisation Code๋ฅผ ํจ๊ป ์ ์กํ๋ค. - ์์ฒญ ์ ๋ณด๋ฅผ ํ์ธํ ํ Redirect URI๋ก Access Token์ ๋ฐ๊ธํ๋ค.
- Client๋ ๋ฐ๊ธ๋ฐ์ Access Token์ ์ด์ฉํด Resource Server์ Resource๋ฅผ ์์ฒญํ๋ค.
- Access Token์ ํ์ธํ ํ ์์ฒญ ๋ฐ์ Resource๋ฅผ Client์๊ฒ ์ ๋ฌํ๋ค.
๐ช Implicit Grant
๋ณ๋์ Authorisation Code ์์ด ๋ฐ๋ก Access Token์ ๋ฐ๊ธํ๋ ๋ฐฉ์์ผ๋ก, ์๊ฒฉ์ฆ๋ช ์ ์์ ํ๊ฒ ์ ์ฅํ๊ธฐ ํ๋ Client(์คํฌ๋ฆฝํธ ์ธ์ด-js-๋ฅผ ์ฌ์ฉํ๋ ๋ธ๋ผ์ฐ์ )์๊ฒ ์ต์ ํ๋ ๋ฐฉ์์ด๋ค.
- Resource Owner๋ Client(์ ํ๋ฆฌ์ผ์ด์ )์๊ฒ ์๋น์ค ์์ฒญ์ ์ ์กํ๋ค.
- Client๋ Authorisation Server์๊ฒ ์ ๊ทผ ๊ถํ์ ์์ฒญํ๋ฉฐ ๋ฏธ๋ฆฌ ์์ฑํ Client ID, Redirect URI, ์๋ตํ์ ์ ํจ๊ป ์ ๋ฌํ๋ค. (Authroization Code๋ฅผ ํ๋ํ๊ธฐ ์ํ ์์ฒญ์ด ์๋)
- Resource Owner๋ ๋ก๊ทธ์ธ ํ์ด์ง๋ฅผ ํตํด ๋ก๊ทธ์ธ์ ์งํํ๋ค.
- ๋ก๊ทธ์ธ์ด ํ์ธ๋๋ฉด Authorisation Server๋ Client์๊ฒ Access Token์ ์ ๋ฌํ๋ค.
- Client๋ Access Token์ ์ด์ฉํด Resource Server์๊ฒ Resource๋ฅผ ์์ฒญํ๋ค.
- Access Token์ ํ์ธํ ํ ์์ฒญ ๋ฐ์ Resource๋ฅผ ์ ๋ฌํ๋ค.
๐ช Resource Owner Password Credential Grant
username, password๋ก Access Token์ ๋ฐ๊ธ๋ฐ๋ ๋ฐฉ์์ด๋ค.
- Resource Owner๋ Client(์ ํ๋ฆฌ์ผ์ด์ )์๊ฒ ์๋น์ค ์์ฒญ์ ์ ์กํ๋ค. ์ด ๋ ๋ก๊ทธ์ธ์ ํ์ํ ์ ๋ณด(Username, Password)๋ฅผ ์ด์ฉํ๋ค.
- Client์์๋ Resource Owner์๊ฒ ์ ๋ฌ๋ฐ์ ๋ก๊ทธ์ธ ์ ๋ณด๋ฅผ ํตํด Authorisation Server์ Access Token์ ์์ฒญํ๋ฉฐ ๋ฏธ๋ฆฌ ์์ฑํ Client ID, ๊ถํ ๋ถ์ฌ ๋ฐฉ์, ๋ก๊ทธ์ธ ์ ๋ณด๋ฅผ ํจ๊ป ์ ๋ฌํ๋ค.
- ์์ฒญ๊ณผ ํจ๊ป ์จ ์ ๋ณด๋ค์ ํ์ธํ ํ Client์๊ฒ Access Token์ ์ ๋ฌํ๋ค.
- Client๋ Access Token์ ์ด์ฉํ์ฌ Resource Server์๊ฒ Resource๋ฅผ ์์ฒญํ๋ค.
- Access Token์ ํ์ธํ ํ ์์ฒญ ๋ฐ์ Resource๋ฅผ ์ ๋ฌํ๋ค.
๐ช Client Credentials Grant
์๊ฒฉ ์ฆ๋ช ์ ์์ ํ๊ฒ ๋ณด๊ดํ ์ ์๋ Client์์๋ง ์ฌ์ฉ๋์ด์ผ ํ๋ฉฐ, Refresh Token์ ์ฌ์ฉ ๋ถ๊ฐํ๋ค.
- Authorisation Server์ Access Token์ ์์ฒญํ๋ค.
- ์์ฒญ๊ณผ ํจ๊ป ์จ ์ ๋ณด๋ค์ ํ์ธํ๊ณ Client์ Access Token์ ์ ๋ฌํ๋ค.
- Client๋ Access Token์ ์ด์ฉํด Resource Server์ ์์ ์์ฒญ์ ๋ณด๋ธ๋ค.
- Access Token์ ํ์ธํ๊ณ ์์ฒญ ๋ฐ์ ์์์ ์ ๋ฌํ๋ค.
'SEB > TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
069 | AWS - EC2, RDS, S3 (0) | 2022.09.30 |
---|---|
061 | ์ธ์ฆ๋ณด์ ๊ธฐ์ด (0) | 2022.09.20 |
058 | Asciidocs, Asciidoctor (2) | 2022.09.15 |
057 | API Documentation, Swagger, SpringRest (0) | 2022.09.14 |
052 | Transaction (0) | 2022.09.05 |