Безопасность Spring: цель .oauth2Client (withDefaults ()); в HttpSecurity

Это из документа

общедоступный HttpSecurityoauth2Client(Customizer<OAuth2ClientConfigurer>oauth2ClientCustomizer) выбрасывает java.lang.Exception

Настраивает поддержку клиента OAuth 2.0.

Пример конфигурации

В следующем примере показано, как включить поддержку клиента OAuth 2.0 для всех конечных точек.

        @Configuration
 @EnableWebSecurity
 public class OAuth2ClientSecurityConfig extends WebSecurityConfigurerAdapter {
        @Override
        protected void configure(HttpSecurity http) throws Exception {
                http
                        .authorizeRequests((authorizeRequests) ->
                                authorizeRequests
                                        .anyRequest().authenticated()
                        )
                        .oauth2Client(withDefaults());
        }
 }
 

Параметры: auth2ClientCustomizer - настройщик, предоставляющий дополнительные параметры для OAuth2ClientConfigurer.

Возвращает: HttpSecurity для дальнейшей настройки.

Я понял, что любые запросы, поступающие на этот сервер, должны быть аутентифицированы.

Как .oauth2Client(withDefaults()); помочь в этом случае?

Если я не ошибаюсь, клиент oAuth2 отправляет запрос, что мы можем настроить по этому поводу? Документация мало что объясняет.

2 ответа

Экземпляр http HttpSecurity является «стороной сервера / приложения настроек bean-компонента».

Его метод oauth2Client связан не с конфигурациями клиентов, а с тем, как и где сервер / приложение должно их обрабатывать.

Пример:

  • Какие клиенты были авторизованы
  • Где хранить авторизованных клиентов
  • Как авторизовать клиентов
  • Как удалить старого авторизованного клиента

Я думаю, здесь вы можете найти более подробную информацию о значениях по умолчанию oauth2Client.

      @EnableWebSecurity
public class OAuth2ClientSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .oauth2Client(oauth2Client ->
                oauth2Client
                    .clientRegistrationRepository(this.clientRegistrationRepository())
                    .authorizedClientRepository(this.authorizedClientRepository())
                    .authorizedClientService(this.authorizedClientService())
                    .authorizationCodeGrant(authorizationCodeGrant ->
                        authorizationCodeGrant
                            .authorizationRequestRepository(this.authorizationRequestRepository())
                            .authorizationRequestResolver(this.authorizationRequestResolver())
                            .accessTokenResponseClient(this.accessTokenResponseClient())
                    )
            );
    }
}
Другие вопросы по тегам