1
1
/*
2
- * Copyright 2020-2024 the original author or authors.
2
+ * Copyright 2020-2025 the original author or authors.
3
3
*
4
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
5
* you may not use this file except in compliance with the License.
15
15
*/
16
16
package sample .config ;
17
17
18
- import java .util .Arrays ;
19
18
import java .util .function .Supplier ;
20
19
21
20
import javax .net .ssl .KeyManagerFactory ;
30
29
import org .springframework .beans .factory .annotation .Qualifier ;
31
30
import org .springframework .boot .ssl .SslBundle ;
32
31
import org .springframework .boot .ssl .SslBundles ;
33
- import org .springframework .boot .web .client .RestTemplateBuilder ;
34
32
import org .springframework .context .annotation .Bean ;
35
33
import org .springframework .context .annotation .Configuration ;
36
34
import org .springframework .http .client .ClientHttpRequestFactory ;
40
38
import org .springframework .security .oauth2 .client .OAuth2AuthorizedClientManager ;
41
39
import org .springframework .security .oauth2 .client .OAuth2AuthorizedClientProvider ;
42
40
import org .springframework .security .oauth2 .client .OAuth2AuthorizedClientProviderBuilder ;
43
- import org .springframework .security .oauth2 .client .endpoint .DefaultClientCredentialsTokenResponseClient ;
44
41
import org .springframework .security .oauth2 .client .endpoint .OAuth2AccessTokenResponseClient ;
45
42
import org .springframework .security .oauth2 .client .endpoint .OAuth2ClientCredentialsGrantRequest ;
46
- import org .springframework .security .oauth2 .client .endpoint .OAuth2ClientCredentialsGrantRequestEntityConverter ;
43
+ import org .springframework .security .oauth2 .client .endpoint .RestClientClientCredentialsTokenResponseClient ;
47
44
import org .springframework .security .oauth2 .client .http .OAuth2ErrorResponseErrorHandler ;
48
45
import org .springframework .security .oauth2 .client .registration .ClientRegistrationRepository ;
49
46
import org .springframework .security .oauth2 .client .web .DefaultOAuth2AuthorizedClientManager ;
53
50
import org .springframework .security .oauth2 .core .http .converter .OAuth2AccessTokenResponseHttpMessageConverter ;
54
51
import org .springframework .util .LinkedMultiValueMap ;
55
52
import org .springframework .util .MultiValueMap ;
56
- import org .springframework .web .client .RestTemplate ;
53
+ import org .springframework .web .client .RestClient ;
57
54
import org .springframework .web .reactive .function .client .WebClient ;
58
55
59
56
/**
@@ -83,17 +80,18 @@ public WebClient defaultClientWebClient(
83
80
public WebClient selfSignedDemoClientWebClient (
84
81
ClientRegistrationRepository clientRegistrationRepository ,
85
82
OAuth2AuthorizedClientRepository authorizedClientRepository ,
86
- RestTemplateBuilder restTemplateBuilder ,
87
83
@ Qualifier ("self-signed-demo-client-http-request-factory" ) Supplier <ClientHttpRequestFactory > clientHttpRequestFactory ,
88
84
SslBundles sslBundles ) throws Exception {
89
85
90
86
// @formatter:off
91
- RestTemplate restTemplate = restTemplateBuilder
92
- .requestFactory (clientHttpRequestFactory )
93
- .messageConverters (Arrays .asList (
94
- new FormHttpMessageConverter (),
95
- new OAuth2AccessTokenResponseHttpMessageConverter ()))
96
- .errorHandler (new OAuth2ErrorResponseErrorHandler ())
87
+ RestClient restClient = RestClient .builder ()
88
+ .requestFactory (clientHttpRequestFactory .get ())
89
+ .messageConverters ((messageConverters ) -> {
90
+ messageConverters .clear ();
91
+ messageConverters .add (new FormHttpMessageConverter ());
92
+ messageConverters .add (new OAuth2AccessTokenResponseHttpMessageConverter ());
93
+ })
94
+ .defaultStatusHandler (new OAuth2ErrorResponseErrorHandler ())
97
95
.build ();
98
96
// @formatter:on
99
97
@@ -102,7 +100,7 @@ public WebClient selfSignedDemoClientWebClient(
102
100
OAuth2AuthorizedClientProviderBuilder .builder ()
103
101
.clientCredentials (clientCredentials ->
104
102
clientCredentials .accessTokenResponseClient (
105
- createClientCredentialsTokenResponseClient (restTemplate )))
103
+ createClientCredentialsTokenResponseClient (restClient )))
106
104
.build ();
107
105
// @formatter:on
108
106
@@ -124,16 +122,17 @@ public WebClient selfSignedDemoClientWebClient(
124
122
public OAuth2AuthorizedClientManager authorizedClientManager (
125
123
ClientRegistrationRepository clientRegistrationRepository ,
126
124
OAuth2AuthorizedClientRepository authorizedClientRepository ,
127
- RestTemplateBuilder restTemplateBuilder ,
128
125
@ Qualifier ("default-client-http-request-factory" ) Supplier <ClientHttpRequestFactory > clientHttpRequestFactory ) {
129
126
130
127
// @formatter:off
131
- RestTemplate restTemplate = restTemplateBuilder
132
- .requestFactory (clientHttpRequestFactory )
133
- .messageConverters (Arrays .asList (
134
- new FormHttpMessageConverter (),
135
- new OAuth2AccessTokenResponseHttpMessageConverter ()))
136
- .errorHandler (new OAuth2ErrorResponseErrorHandler ())
128
+ RestClient restClient = RestClient .builder ()
129
+ .requestFactory (clientHttpRequestFactory .get ())
130
+ .messageConverters ((messageConverters ) -> {
131
+ messageConverters .clear ();
132
+ messageConverters .add (new FormHttpMessageConverter ());
133
+ messageConverters .add (new OAuth2AccessTokenResponseHttpMessageConverter ());
134
+ })
135
+ .defaultStatusHandler (new OAuth2ErrorResponseErrorHandler ())
137
136
.build ();
138
137
// @formatter:on
139
138
@@ -144,7 +143,7 @@ public OAuth2AuthorizedClientManager authorizedClientManager(
144
143
.refreshToken ()
145
144
.clientCredentials (clientCredentials ->
146
145
clientCredentials .accessTokenResponseClient (
147
- createClientCredentialsTokenResponseClient (restTemplate )))
146
+ createClientCredentialsTokenResponseClient (restClient )))
148
147
.provider (new DeviceCodeOAuth2AuthorizedClientProvider ())
149
148
.build ();
150
149
// @formatter:on
@@ -177,20 +176,16 @@ private static ClientHttpConnector createClientConnector(SslBundle sslBundle) th
177
176
}
178
177
179
178
private static OAuth2AccessTokenResponseClient <OAuth2ClientCredentialsGrantRequest > createClientCredentialsTokenResponseClient (
180
- RestTemplate restTemplate ) {
181
- DefaultClientCredentialsTokenResponseClient clientCredentialsTokenResponseClient =
182
- new DefaultClientCredentialsTokenResponseClient ();
183
- clientCredentialsTokenResponseClient .setRestOperations (restTemplate );
184
-
185
- OAuth2ClientCredentialsGrantRequestEntityConverter clientCredentialsGrantRequestEntityConverter =
186
- new OAuth2ClientCredentialsGrantRequestEntityConverter ();
187
- clientCredentialsGrantRequestEntityConverter .addParametersConverter (authorizationGrantRequest -> {
179
+ RestClient restClient ) {
180
+ RestClientClientCredentialsTokenResponseClient clientCredentialsTokenResponseClient =
181
+ new RestClientClientCredentialsTokenResponseClient ();
182
+ clientCredentialsTokenResponseClient .addParametersConverter (authorizationGrantRequest -> {
188
183
MultiValueMap <String , String > parameters = new LinkedMultiValueMap <>();
189
184
// client_id parameter is required for tls_client_auth method
190
185
parameters .add (OAuth2ParameterNames .CLIENT_ID , authorizationGrantRequest .getClientRegistration ().getClientId ());
191
186
return parameters ;
192
187
});
193
- clientCredentialsTokenResponseClient .setRequestEntityConverter ( clientCredentialsGrantRequestEntityConverter );
188
+ clientCredentialsTokenResponseClient .setRestClient ( restClient );
194
189
195
190
return clientCredentialsTokenResponseClient ;
196
191
}
0 commit comments