Spring OAuth2.0

OAuth์˜ ๊ธฐ๋ณธ ์„ค๋ช…์€ ์—ฌ๊ธฐ๋ฅผ ์ฐธ๊ณ ํ•˜์ž

Spring์—์„œ OAuth๋ฅผ ์ ์šฉ

Password Grant Type?

๊ณ„์ •์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ ์žˆ๋Š” ์•ฑ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์‹์œผ๋กœ ๋น„๋ฐ€๋ฒˆํ˜ธ,์•„์ด๋””,grant type์„ request์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ, client_id์™€ client_Secret์€ header์— ๋„ฃ์–ด ์ค„ ์ˆ˜ ์žˆ๋‹ค.

ํŒจ์Šค์›Œ๋“œ๋ฅผ ์ง์ ‘ ์š”๊ตฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋“œํŒŒํ‹ฐํ•œํ…Œ ๋„˜๊ฒจ์ฃผ๋Š” ๊ฒƒ์ด ์•„๋‹Œ ๊ณ„์ •์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ ์žˆ๋Š” ๊ทธ ์•ฑ์—์„œ๋งŒ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ ๋ฐฉ์‹. (์„œ๋น„์Šค ์˜ค๋„ˆ๊ฐ€ ๋งŒ๋“  ํด๋ผ์ด์–ธํŠธ์—์„œ ์‚ฌ์šฉํ•˜๋Š” Grant Type)

1ํ™‰๋งŒ์— Access Token์„ ๋ฐ›์•„์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

https://developer.okta.com/blog/2018/06/29/what-is-the-oauth2-password-grant

AuthorizationServer ์„ค์ • (์ธ์ฆ ์„œ๋ฒ„)

@EnableAuthorizationServer ๊ณผ extends AuthorizationServerConfigurerAdapter์„ ์ด์šฉํ•ด configure ์„ธ๊ฐœ ๋งค์„œ๋“œ override

  • configure(AuthorizationServerSecurityConfigurer security)

    • passwordEncode ์„ค์ •

  • configure(ClientDetailsServiceConfigurer clients)

    • ํ† ํฐ ์ €์žฅ๋ฐฉ์‹

    • ํด๋ผ์ด์–ธํŠธ ์„ค์ • (clinet id)

    • grantType

    • scopes

    • secret

    • acccessToken์‹œ๊ฐ„

    • refreshToken์‹œ๊ฐ„

  • configure(AuthorizationServerEndpointsConfigurer

    • tokenSore

    • authenticationManager

    • userDatailSErvice

  • httpBasic๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด dependency ์ถ”๊ฐ€

ResourceServer ์„ค์ •

@EnableResourceServer ๊ณผ extends ResourceServerConfigurerAdapter์„ ์ด์šฉํ•ด configure ๋‘๊ฐœ ๋งค์„œ๋“œ override

  • configure(ResourceServerSecurityConfigurer resources)

    • ๋ฆฌ์†Œ์Šค ID

  • configure(HttpSecurity http)

    • ์ ‘๊ทผ ๊ถŒํ•œ (annoymous, authenticated)

    • ๋ฉ”์„œ๋“œ์™€ url์— ๋Œ€ํ•œ ์ ‘๊ทผ ๊ถŒํ•œ

      ex.

      • GET /api/** : permit all

      • POST /api/** : authenticated

      • PUT /api/** : authenticated

    • ์—๋Ÿฌ ์ฒ˜๋ฆฌ

      • accessDeniedHandler(OAuth2AccessDeniedHandler())

Last updated