OAuth2AuthorizedClient
oauth2Client() - OAuth2AuthorizedClient
OAuth2AuthorizedClient๋ ์ธ๊ฐ๋ฐ์ ํด๋ผ์ด์ธํธ๋ฅผ ์๋ฏธํ๋ ํด๋์ค๋ค.์ต์ข ์ฌ์ฉ์(๋ฆฌ์์ค ์์ ์)๊ฐ ํด๋ผ์ด์ธํธ์๊ฒ ๋ฆฌ์์ค์ ์ ๊ทผํ ์ ์๋ ๊ถํ์ ๋ถ์ฌํ๋ฉด, ํด๋ผ์ด์ธํธ๋ฅผ ์ธ๊ฐ๋ ํด๋ผ์ด์ธํธ๋ก ๊ฐ์ฃผํ๋ค.
OAuth2AuthorizedClient๋ AccessToken๊ณผ RefreshToken์ClientRegistration(ํด๋ผ์ด์ธํธ)๊ณผ ๊ถํ์ ๋ถ์ฌํ ์ต์ข ์ฌ์ฉ์์ธPrincipal๊ณผ ํจ๊ป ๋ฌถ์ด์ค๋ค.OAuth2AuthorizedClient์ AccessToken์ ์ฌ์ฉํด์ ๋ฆฌ์์ค ์๋ฒ์ ์์์ ์ ๊ทผ ํ ์ ์์ผ๋ฉฐ ์ธ๊ฐ ์๋ฒ์์ ํต์ ์ผ๋ก ํ ํฐ์ ๊ฒ์ฆํ ์ ์๋ค.OAuth2AuthorizedClient์ ClientRegistration๊ณผ AccessToken์ ์ฌ์ฉํด์UserInfo์๋ ํฌ์ธํธ๋ก ์์ฒญํ ์ ์๋ค.

OAuth2AuthorizedClientRepository
OAuth2AuthorizedClientRepository๋ ๋ค๋ฅธ ์น ์์ฒญ์ด ์๋ ๋์ผํOAuth2AuthorizedClient๋ฅผ ์ ์งํ๋ ์ญํ ์ ๋ด๋นํ๋ค.OAuth2AuthorizedClientService์๊ฒ
OAuth2AuthorizedClient์ ์ ์ฅ, ์กฐํ, ์ญ์ ์ฒ๋ฆฌ๋ฅผ ์์ํ๋ค.

OAuth2AuthorizedClientService
OAuth2AuthorizedClientService์ ์ ํ๋ฆฌ์ผ์ด์ ๋ ๋ฒจ์์OAuth2AuthorizedClient๋ฅผ ๊ด๋ฆฌ(์ ์ฅ, ์กฐํ, ์ญ์ )๋ฅผ ํ๋ค.

์น ์ ํ๋ฆฌ์ผ์ด์
์์ ํ์ฉ
OAuth2 Client ์๋ ์ค์ ์ด๊ธฐํ ๊ณผ์ ์์
OAuth2AuthorizedClientRepository๊ณผOAuth2AuthorizedClientService๊ฐ ์คํ๋ง ๋น์ผ๋ก ๋ฑ๋ก๋๋ค.
OAuth2AuthorizedClientRepository๋OAuth2AuthorizedClientService๋ฅผ ํตํด OAuth2AuthorizedClient๋ฅผ ์ป์ ์ ์๋ค.OAuth2AuthorizedClient์์
OAuth2AccessToken์ ์ฐพ์ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ฏ๋ก ๋ณดํธ ์ค์ธ ๋ฆฌ์์ค ์์ฒญ์ ์์ํ ๋ ์ฌ์ฉํ ์ ์๋ค.
OAuth2AuthorizationCodeGrantFilter
Authorization Code Grant ๋ฐฉ์์ผ๋ก ๊ถํ ๋ถ์ฌ ์์ฒญ์ ์ง์ํ๋ ํํฐ
์ธ๊ฐ ์๋ฒ๋ก๋ถํฐ ๋ฆฌ๋ค์ด๋ ํธ ๋๋ฉด์ ์ ๋ฌ๋
code๋ฅผ ์ธ๊ฐ ์๋ฒ์ Access Token์ผ๋ก ๊ตํํ๋ค.OAuth2AuthorizedClientRepository๋ฅผ ์ฌ์ฉํด์ OAuth2AuthorizedClient๋ฅผ ์ ์ฅ ํ ํด๋ผ์ด์ธํธ์Redirect Uri๋ก ์ด๋ํ๋ค.
์คํ ์กฐ๊ฑด
์์ฒญ ํ๋ผ๋ฏธํฐ์
code์state๊ฐ์ด ์กด์ฌํ๋์ง ํ์ธOAuth2AuthorizationRequest๊ฐ์ฒด๊ฐ ์กด์ฌํ๋์ง ํ์ธ

์์ ์ฝ๋
Controller
HTML
yml
๊ณผ์ ๋๋ฒ๊น
1. OAuth2AuthorizationRequestRedirectFilter
์ฌ์ฉ์ ์น์ธ์ ํ ์ ์๋ url๋ก ๋ฆฌ๋ค์ด๋ ํธ ํ๋ค.

2. OAuth2AuthorizationCodeGrantFilter
๋ฆฌ๋ค์ด๋ ์ ๋์ด ์ด ํํฐ๋ก ์๋ค.
ํน์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ฉด ํน์ ์ฒ๋ฆฌ๋ฅผ ํ๊ณ ๋ค์ ํํฐ๋ก ๊ฐ์ง ์๊ณ , ๋ง์กฑํ์ง ์์ผ๋ฉด ๋ค์ ํํฐ๋ก ๋์ด๊ฐ๋ค.

์์ฒญ ํ๋ผ๋ฏธํฐ์
code์state๊ฐ ์กด์ฌํ๋์ง ๋ณด๊ณ ,OAuth2AuthorizationRequest๊ฐ ์กด์ฌํ๋์ง ํ์ธํ๋ค.


redirect_uri๋ฅผ ๋น๊ตํ๋ค.

๋ชจ๋ ์กฐ๊ฑด์ ๋ง์กฑํ๋ฉด ๋ค์ ์ฝ๋๋ฅผ ์คํํ๋ค.
๋จผ์
AuthenticationManager(ProviderManager)์๊ฒ ์ธ์ฆ ์์ฒญ์ ์์ํ๋ค.์ฌ๊ธฐ์ ์ฌ์ฉ๋๋
AuthenticationProvider๋OAuth2AuthorizationCodeAuthenticationProvider๋ก ์ฌ๊ธฐ์ ์ธ๊ฐ ์๋ฒ์ ํต์ ํ์ฌAccess Token๊ตํ์ด ์ด๋ฃจ์ด์ง๋ค.

๊ทธ๋ฆฌ๊ณ
OAuth2AuthorizedClient๋ฅผ ์ ์ฅํ๊ณ ,redirectUrl๋ก ๋ฆฌ๋ค์ด๋ ํธ ํ๋ค.์ฌ๊ธฐ์
redirectUrl์application.ymlํ์ผ์์ ์ค์ ํ ๊ฒฝ๋ก์ด๋ค.

3. controller
๊ทธ๋ฆฌ๊ณ ๋์ ์คํ๋ง MVC๋ก ๋์ด์จ๋ค.
์ฌ๊ธฐ๋ก ๋ฆฌ๋ค์ด๋ ์ ๋์ด ์์ฒญ์ด ์๋ค๋ ๊ฒ์ ํด๋ผ์ด์ธํธ๊ฐ ์ธ๊ฐ ์๋ฒ๋ก๋ถํฐ ์ธ๊ฐ๋ฅผ ๋ฐ์ ์ํ์์ ์จ ๊ฒ์ด๋ค.
ํ์ง๋ง ์ต์ข ์ฌ์ฉ์์ ์ธ์ฆ ์ฒ๋ฆฌ๊ฐ ๋ ๊ฒ์ ์๋๊ธฐ ๋๋ฌธ์
SecurityContextHolder์์ ๊บผ๋ธAuthentication์ ์์ง "Anonymous" ์ด๋ค.๊ทธ๋์
DefaultOAuth2UserService์๊ฒUserInfo์๋ํฌ์ธํธ ์์ฒญ์ ๋ณด๋ด ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์ป๊ณSecurityContextHolder์ ์ ์ฅํด ์ฃผ์๋ค.์ฐธ๊ณ ๋ก ๊ธฐ๋ณธ์ผ๋ก ๋น์ผ๋ก ๋ฑ๋ก๋๋
OAuth2AuthorizedClientRepository๊ตฌํ์ฒด๋ ์ต๋ช ์ฌ์ฉ์์ด๋๋ผ๋ principalName์anonymousUser๋ก ํด์ ๋ฐํํ์ง๋งOAuth2AuthorizedClientService๊ตฌํ์ฒด๋ ๊ทธ๋ ์ง ์๊ธฐ ๋๋ฌธ์null์ด๋ค.


์ด์ โฉ๏ธ - OAuth 2.0 Client(oauth2Client) - OAuth2ClientConfigurer ์ด๊ธฐํ
๋ค์ โช๏ธ - OAuth 2.0 Client(oauth2Client) - DefaultOAuth2AuthorizedClientManager
Last updated
