oauth2Client() - 필터 기반 구현

스프링 시큐리티의 oauth2Login() 필터에 의한 자동 인증 처리를 하지 않고 DefaultOAuth2AuthorizedClientManager 클래스를 사용하여 Spring MVC에서 직접 인증처리를 하는 로그인 기능을 구현한다.

기본 구성

  • AppConfig : DefaultOAuth2AuthorizedClientManager 빈 생성 및 설정 초기화

  • DefaultOAuth2AuthorizedClientManager : OAuth2 권한 부여 흐름 처리

  • LoginController : DefaultOAuth2AuthorizedClientManager를 사용해서 로그인 처리

로그인 구현 순서

  1. DefaultOAuth2AuthorizedClientManager 빈 생성 및 파라미터 초깃값 정의

  2. 권한 부여 유형에 따라 요청이 이루어지도록 application.yml 설정 조정

  3. /oauth2Login 주소로 권한 부여 흐름 요청

  4. DefaultOAuth2AuthorizedClientManager 에게 권한 부여 요청

  5. 권한 부여가 성공하면 OAuth2AuthenticationSuccessHandler를 호출하여 인증 이후 작업 진행

    • DefaultOAuth2AuthorizedClientManager의 최종 반환값인 OAuth2AuthorizedClientOAuth2AuthorizedClientRepository에 저장

  6. OAuth2AuthorizedClient 에서 AccessToken을 참조하여 /userinfo 엔드포인트 요청으로 최종 사용자 정보를 가져온다.

  7. 사용자 정보와 권한을 가지고 인증객체를 만든 후 SecurityContext에 저장하고 인증 완료

  8. 인증이 성공하면 위 과정을 커스텀 필터를 만들어 처리하도록 한다.

img_21.png

예제 코드

CustomOAuth2AuthenticationFilter

SecurityConfig

컨트롤러


이전 ↩️ - OAuth 2.0 Client(oauth2Client) - DefaultOAuth2AuthorizedClientManager - Refresh Token 권한 부여 구현arrow-up-right

메인 ⏫arrow-up-right

다음 ↪️ - OAuth 2.0 Client(oauth2Client) - @RegisteredOAuth2AuthorizedClient 활용arrow-up-right

Last updated