17
17
package org .springframework .security .oauth2 .client .registration ;
18
18
19
19
import java .net .URI ;
20
- import java .util .Collections ;
21
20
import java .util .LinkedHashMap ;
22
21
import java .util .List ;
23
22
import java .util .Map ;
@@ -146,7 +145,7 @@ public static ClientRegistration.Builder fromOidcConfiguration(Map<String, Objec
146
145
*/
147
146
public static ClientRegistration .Builder fromOidcIssuerLocation (String issuer ) {
148
147
Assert .hasText (issuer , "issuer cannot be empty" );
149
- return getBuilder (issuer , oidc (URI . create ( issuer ) ));
148
+ return getBuilder (issuer , oidc (issuer ));
150
149
}
151
150
152
151
/**
@@ -189,21 +188,17 @@ public static ClientRegistration.Builder fromOidcIssuerLocation(String issuer) {
189
188
*/
190
189
public static ClientRegistration .Builder fromIssuerLocation (String issuer ) {
191
190
Assert .hasText (issuer , "issuer cannot be empty" );
192
- URI uri = URI .create (issuer );
193
- return getBuilder (issuer , oidc (uri ), oidcRfc8414 (uri ), oauth (uri ));
191
+ return getBuilder (issuer , oidc (issuer ), oidcRfc8414 (issuer ), oauth (issuer ));
194
192
}
195
193
196
- private static Supplier <ClientRegistration .Builder > oidc (URI issuer ) {
197
- // @formatter:off
198
- URI uri = UriComponentsBuilder .fromUri (issuer )
199
- .replacePath (issuer .getPath () + OIDC_METADATA_PATH )
200
- .build (Collections .emptyMap ());
194
+ static Supplier <ClientRegistration .Builder > oidc (String issuer ) {
195
+ UriComponents uri = oidcUri (issuer );
201
196
// @formatter:on
202
197
return () -> {
203
- RequestEntity <Void > request = RequestEntity .get (uri ).build ();
198
+ RequestEntity <Void > request = RequestEntity .get (uri . toUriString () ).build ();
204
199
Map <String , Object > configuration = rest .exchange (request , typeReference ).getBody ();
205
200
OIDCProviderMetadata metadata = parse (configuration , OIDCProviderMetadata ::parse );
206
- ClientRegistration .Builder builder = withProviderConfiguration (metadata , issuer . toASCIIString () )
201
+ ClientRegistration .Builder builder = withProviderConfiguration (metadata , issuer )
207
202
.jwkSetUri (metadata .getJWKSetURI ().toASCIIString ());
208
203
if (metadata .getUserInfoEndpointURI () != null ) {
209
204
builder .userInfoUri (metadata .getUserInfoEndpointURI ().toASCIIString ());
@@ -212,35 +207,48 @@ private static Supplier<ClientRegistration.Builder> oidc(URI issuer) {
212
207
};
213
208
}
214
209
215
- private static Supplier <ClientRegistration .Builder > oidcRfc8414 (String issuer ) {
216
- URI uri = oidcRfc8414Uri (issuer );
210
+ static UriComponents oidcUri (String issuer ) {
211
+ UriComponents uri = UriComponentsBuilder .fromUriString (issuer ).build ();
212
+ // @formatter:off
213
+ return UriComponentsBuilder .newInstance ().uriComponents (uri )
214
+ .replacePath (uri .getPath () + OIDC_METADATA_PATH )
215
+ .build ();
216
+ }
217
+
218
+ static Supplier <ClientRegistration .Builder > oidcRfc8414 (String issuer ) {
219
+ UriComponents uri = oidcRfc8414Uri (issuer );
220
+ // @formatter:on
217
221
return getRfc8414Builder (issuer , uri );
218
222
}
219
223
220
- static URI oidcRfc8414Uri (String issuer ) {
224
+ static UriComponents oidcRfc8414Uri (String issuer ) {
221
225
UriComponents uri = UriComponentsBuilder .fromUriString (issuer ).build ();
222
226
// @formatter:off
223
227
return UriComponentsBuilder .newInstance ().uriComponents (uri )
224
228
.replacePath (OIDC_METADATA_PATH + uri .getPath ())
225
- .build (Collections .emptyMap ());
226
- // @formatter:on
229
+ .build ();
230
+ }
231
+
232
+ static Supplier <ClientRegistration .Builder > oauth (String issuer ) {
233
+ UriComponents uri = oauthUri (issuer );
234
+ return getRfc8414Builder (issuer , uri );
227
235
}
228
236
229
- private static Supplier <ClientRegistration .Builder > oauth (URI issuer ) {
237
+ static UriComponents oauthUri (String issuer ) {
238
+ UriComponents uri = UriComponentsBuilder .fromUriString (issuer ).build ();
230
239
// @formatter:off
231
- URI uri = UriComponentsBuilder .fromUri ( issuer )
232
- .replacePath (OAUTH_METADATA_PATH + issuer .getPath ())
233
- .build (Collections . emptyMap () );
240
+ return UriComponentsBuilder .newInstance (). uriComponents ( uri )
241
+ .replacePath (OAUTH_METADATA_PATH + uri .getPath ())
242
+ .build ();
234
243
// @formatter:on
235
- return getRfc8414Builder (issuer , uri );
236
244
}
237
245
238
- private static Supplier <ClientRegistration .Builder > getRfc8414Builder (URI issuer , URI uri ) {
246
+ private static Supplier <ClientRegistration .Builder > getRfc8414Builder (String issuer , UriComponents uri ) {
239
247
return () -> {
240
- RequestEntity <Void > request = RequestEntity .get (uri ).build ();
248
+ RequestEntity <Void > request = RequestEntity .get (uri . toUriString () ).build ();
241
249
Map <String , Object > configuration = rest .exchange (request , typeReference ).getBody ();
242
250
AuthorizationServerMetadata metadata = parse (configuration , AuthorizationServerMetadata ::parse );
243
- ClientRegistration .Builder builder = withProviderConfiguration (metadata , issuer . toASCIIString () );
251
+ ClientRegistration .Builder builder = withProviderConfiguration (metadata , issuer );
244
252
URI jwkSetUri = metadata .getJWKSetURI ();
245
253
if (jwkSetUri != null ) {
246
254
builder .jwkSetUri (jwkSetUri .toASCIIString ());
0 commit comments