OAuth 2.0 Resource Server

OAuth 2.0 Resource Server

  • OAuth 2.0 ์ธ๊ฐ€ ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์—ญํ•  ์ค‘ ํด๋ผ์ด์–ธํŠธ ๋ฐ ์ธ๊ฐ€ ์„œ๋ฒ„์™€์˜ ํ†ต์‹ ์„ ๋‹ด๋‹นํ•˜๋Š” ๋ฆฌ์†Œ์Šค ์„œ๋ฒ„์˜ ๊ธฐ๋Šฅ์„ ํ•„ํ„ฐ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌํ˜„ํ•œ ๋ชจ๋“ˆ

  • ๊ฐ„๋‹จํ•œ ์„ค์ •๋งŒ์œผ๋กœ ํด๋ผ์ด์–ธํŠธ์˜ ๋ฆฌ์†Œ์Šค ์ ‘๊ทผ ์ œํ•œ, ํ† ํฐ ๊ฒ€์ฆ์„ ์œ„ํ•œ ์ธ๊ฐ€ ์„œ๋ฒ„์™€์˜ ํ†ต์‹  ๋“ฑ์˜ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ถŒํ•œ ๊ด€๋ฆฌ๋ฅผ ๋ณ„๋„ ์ธ๊ฐ€ ์„œ๋ฒ„์— ์œ„์ž„ํ•˜๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ฆฌ์†Œ์Šค ์„œ๋ฒ„๋Š” ์š”์ฒญ์„ ์ธ๊ฐ€ํ•  ๋•Œ ์ด ์ธ๊ฐ€ ์„œ๋ฒ„์— ๋ฌผ์–ด๋ณผ ์ˆ˜ ์žˆ๋‹ค.

OAuth2ResourceServer

  • ํด๋ผ์ด์–ธํŠธ์˜ ์ ‘๊ทผ์„ ์ œํ•œํ•˜๋Š” ์ธ๊ฐ€ ์ •์ฑ…์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ฃผ๋ชฉ์ 

  • ์ธ๊ฑฐ ์„œ๋ฒ„์—์„œ ๋ฐœ๊ธ‰ํ•œ Access Token์˜ ์œ ํšจ์„ฑ์„ ๊ฒ€์ฆํ•˜๊ณ  ์ ‘๊ทผ ๋ฒ”์œ„(์Šค์ฝ”ํ”„)์— ๋”ฐ๋ผ ์ ์ ˆํ•œ ์ž์›์„ ์ „๋‹ฌํ•˜๋„๋ก ์„ค์ •ํ•œ๋‹ค.

JWT

  • JWT๋กœ ์ „๋‹ฌ๋˜๋Š” ํ† ํฐ์„ ๊ฒ€์ฆํ•˜๊ธฐ ์œ„ํ•œ JwtDecoder, BarerTokenAuthenticationFilter, JwtAuthenticationProvider ๋“ฑ์˜ ํด๋ž˜์Šค ๋ชจ๋ธ๋“ค์„ ์ œ๊ณตํ•œ๋‹ค.

  • ์ž์ฒด ๊ฒ€์ฆ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ง€์›ํ•œ๋‹ค.

Opaque

  • Opaque : ๋ถˆํˆฌ๋ช…ํ•œ

  • ์ธ๊ฐ€ ์„œ๋ฒ„์˜ introspection ์—”๋“œ ํฌ์ธํŠธ๋กœ ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ๋Š” Opaque ํ† ํฐ์„ ์ง€์›ํ•œ๋‹ค.

  • ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ† ํฐ์˜ ํ™œ์„ฑํ™” ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.


์˜์กด์„ฑ

  • ๋ฆฌ์†Œ์Šค ์„œ๋ฒ„๋ฅผ ์ง€์›ํ•˜๋Š” ์ฝ”๋“œ๋Š” ๋Œ€๋ถ€๋ถ„ spring-security-oauth2-resource-server์— ๋“ค์–ด์žˆ๋‹ค.

  • JWT๋ฅผ ๋””์ฝ”๋”ฉํ•˜๊ณ  ๊ฒ€์ฆํ•˜๋Š” ๋กœ์ง์€ spring-security-oauth2-jose์— ์žˆ๋‹ค.

  • ๋”ฐ๋ผ์„œ ๋ฆฌ์†Œ์Šค ์„œ๋ฒ„๊ฐ€ ์‚ฌ์šฉํ•  Bearer ํ† ํฐ์„ JWT๋กœ ์ธ์ฝ”๋”ฉ ํ•œ๋‹ค๋ฉด ๋‘ ๋ชจ๋“ˆ์ด ๋ชจ๋‘ ํ•„์š”ํ•˜๋‹ค.

  • ์œ„์˜ ์˜์กด์„ฑ์€ ๋‘ ๋ชจ๋“ˆ์ด ๋ชจ๋‘ ํฌํ•จ๋˜์–ด ์žˆ๋‹ค.


๋ฉ”์ธ โซarrow-up-right

๋‹ค์Œ โ†ช๏ธ - OAuth 2.0 Resource Server - Resource Server ์‹œ์ž‘(application.yml,OAuth2ResourceServerProperties)arrow-up-right

Last updated