1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- /*
- * Copyright 2020-2023 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- package sample.config;
- import sample.web.authentication.DeviceCodeOAuth2AuthorizedClientProvider;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.security.oauth2.client.OAuth2AuthorizedClientManager;
- import org.springframework.security.oauth2.client.OAuth2AuthorizedClientProvider;
- import org.springframework.security.oauth2.client.OAuth2AuthorizedClientProviderBuilder;
- import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository;
- import org.springframework.security.oauth2.client.web.DefaultOAuth2AuthorizedClientManager;
- import org.springframework.security.oauth2.client.web.OAuth2AuthorizedClientRepository;
- import org.springframework.security.oauth2.client.web.reactive.function.client.ServletOAuth2AuthorizedClientExchangeFilterFunction;
- import org.springframework.web.reactive.function.client.WebClient;
- /**
- * @author Steve Riesenberg
- * @since 1.1
- */
- @Configuration
- public class WebClientConfig {
- @Bean
- public WebClient webClient(OAuth2AuthorizedClientManager authorizedClientManager) {
- ServletOAuth2AuthorizedClientExchangeFilterFunction oauth2Client =
- new ServletOAuth2AuthorizedClientExchangeFilterFunction(authorizedClientManager);
- // @formatter:off
- return WebClient.builder()
- .apply(oauth2Client.oauth2Configuration())
- .build();
- // @formatter:on
- }
- @Bean
- public OAuth2AuthorizedClientManager authorizedClientManager(
- ClientRegistrationRepository clientRegistrationRepository,
- OAuth2AuthorizedClientRepository authorizedClientRepository) {
- OAuth2AuthorizedClientProvider authorizedClientProvider =
- OAuth2AuthorizedClientProviderBuilder.builder()
- .provider(new DeviceCodeOAuth2AuthorizedClientProvider())
- .authorizationCode()
- .refreshToken()
- .build();
- DefaultOAuth2AuthorizedClientManager authorizedClientManager =
- new DefaultOAuth2AuthorizedClientManager(
- clientRegistrationRepository, authorizedClientRepository);
- authorizedClientManager.setAuthorizedClientProvider(authorizedClientProvider);
- // Set a contextAttributesMapper to obtain device_code from the request
- authorizedClientManager.setContextAttributesMapper(DeviceCodeOAuth2AuthorizedClientProvider
- .deviceCodeContextAttributesMapper());
- return authorizedClientManager;
- }
- }
|