# oauth2Client() - OAuth2ClientConfigurer 초기화

![img.png](https://2900387690-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FOjEy54f4ToLNl5n9gmZs%2Fuploads%2Fgit-blob-7da5a9af7b2dde19f694bf4d18f5345fb50a9744%2Fimg.png?alt=media)

> * `oauth2Client()`는 **AuthorizationCodeGrantConfigurer**를 호출하면서 위 클래스들을 생성한다.
> * `OAuth2AuthorizationCodeGrantFilter`를 제외한 나머지 클래스들은 [권한 부여 코드 승인 방식](https://geun-00.gitbook.io/geun-00-docs/spring/security/oauth/undefined/authorization)에서 인가 서버로 **권한 부여 코드**를 요청할 때 사용하는 클래스다.
> * `OAuth2AuthorizationCodeGrantFilter`는 **액세스 토큰**을 발급받기 위해 사용하는 클래스다.

***

## 초기화 과정 디버깅

```java
@Configuration
@EnableWebSecurity
public class OAuth2ClientConfig {
    
    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http
                .authorizeHttpRequests(request -> request
                        .anyRequest().authenticated()
                )
//                .oauth2Login(Customizer.withDefaults())
                .oauth2Client(Customizer.withDefaults())
        ;
        return http.build();
    }
}
```

> * `oauth2Login()` : 인가 서버로부터 클라이언트가 인가를 받고, 최종 사용자가 인증 처리를 하는 데까지 기능들을 포함
> * `oauth2Client()` : 인가 서버로부터 클라이언트가 인가를 받는 과정만 처리

* `OAuth2ClientConfigurer`는 `AuthorizationCodeGrantConfigurer`를 내부 클래스로 갖고 있으며 초기화 메서드를 호출만 한다.

![img.png](https://2900387690-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FOjEy54f4ToLNl5n9gmZs%2Fuploads%2Fgit-blob-ebf23baaf17dce0fb2cc2bb2de03d1828ec7882c%2Fimg.png?alt=media)

![img\_1.png](https://2900387690-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FOjEy54f4ToLNl5n9gmZs%2Fuploads%2Fgit-blob-be69e68dab3b9164fbd12eff8f95a06108079a61%2Fimg_1.png?alt=media)

* `init()` 메서드에서는 `OAuth2AuthorizationCodeAuthenticationProvider`를 초기화하고 저장한다.

![img\_2.png](https://2900387690-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FOjEy54f4ToLNl5n9gmZs%2Fuploads%2Fgit-blob-5f03a082d3202595b880df45994428898a2ca771%2Fimg_2.png?alt=media)

* `configure()` 메서드에서는 `OAuth2AuthorizationRequestRedirectFilter`와 `OAuth2AuthorizationCodeGrantFilter`를 초기화하고 저장한다.

![img\_3.png](https://2900387690-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FOjEy54f4ToLNl5n9gmZs%2Fuploads%2Fgit-blob-8f8d366612c255f3cbc27c9b4909df7c780c6932%2Fimg_3.png?alt=media)

* [`oauth2Login()` 초기화로 생성되는 필터](https://geun-00.gitbook.io/geun-00-docs/spring/security/oauth/oauth2login/oauth2loginconfigurer)와 비교했을 때 `OAuth2LoginAuthenticationFilter`와 같은 인증 처리를 하는 필터가 생성되지 않는다.
* 즉 `oauth2Client()` 설정은 최종 사용자의 인증 처리는 제공하지 않는다.

![img\_4.png](https://2900387690-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FOjEy54f4ToLNl5n9gmZs%2Fuploads%2Fgit-blob-f16912fc0a8350986c08851653bbd85f06956c11%2Fimg_4.png?alt=media)

***

[메인 ⏫](https://github.com/genesis12345678/TIL/blob/main/Spring/security/oauth/main.md)

[다음 ↪️ - OAuth 2.0 Client(oauth2Client) - OAuth2AuthorizedClient](https://github.com/genesis12345678/TIL/blob/main/Spring/security/oauth/OAuth2Client/OAuth2AuthorizedClient.md)
