1717package org .springframework .security .oauth2 .client .registration ;
1818
1919import java .net .URI ;
20- import java .util .Collections ;
2120import java .util .LinkedHashMap ;
2221import java .util .List ;
2322import java .util .Map ;
@@ -146,7 +145,7 @@ public static ClientRegistration.Builder fromOidcConfiguration(Map<String, Objec
146145 */
147146 public static ClientRegistration .Builder fromOidcIssuerLocation (String issuer ) {
148147 Assert .hasText (issuer , "issuer cannot be empty" );
149- return getBuilder (issuer , oidc (URI . create ( issuer ) ));
148+ return getBuilder (issuer , oidc (issuer ));
150149 }
151150
152151 /**
@@ -189,21 +188,17 @@ public static ClientRegistration.Builder fromOidcIssuerLocation(String issuer) {
189188 */
190189 public static ClientRegistration .Builder fromIssuerLocation (String issuer ) {
191190 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 ));
194192 }
195193
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 );
201196 // @formatter:on
202197 return () -> {
203- RequestEntity <Void > request = RequestEntity .get (uri ).build ();
198+ RequestEntity <Void > request = RequestEntity .get (uri . toUriString () ).build ();
204199 Map <String , Object > configuration = rest .exchange (request , typeReference ).getBody ();
205200 OIDCProviderMetadata metadata = parse (configuration , OIDCProviderMetadata ::parse );
206- ClientRegistration .Builder builder = withProviderConfiguration (metadata , issuer . toASCIIString () )
201+ ClientRegistration .Builder builder = withProviderConfiguration (metadata , issuer )
207202 .jwkSetUri (metadata .getJWKSetURI ().toASCIIString ());
208203 if (metadata .getUserInfoEndpointURI () != null ) {
209204 builder .userInfoUri (metadata .getUserInfoEndpointURI ().toASCIIString ());
@@ -212,35 +207,48 @@ private static Supplier<ClientRegistration.Builder> oidc(URI issuer) {
212207 };
213208 }
214209
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
217221 return getRfc8414Builder (issuer , uri );
218222 }
219223
220- static URI oidcRfc8414Uri (String issuer ) {
224+ static UriComponents oidcRfc8414Uri (String issuer ) {
221225 UriComponents uri = UriComponentsBuilder .fromUriString (issuer ).build ();
222226 // @formatter:off
223227 return UriComponentsBuilder .newInstance ().uriComponents (uri )
224228 .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 );
227235 }
228236
229- private static Supplier <ClientRegistration .Builder > oauth (URI issuer ) {
237+ static UriComponents oauthUri (String issuer ) {
238+ UriComponents uri = UriComponentsBuilder .fromUriString (issuer ).build ();
230239 // @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 ();
234243 // @formatter:on
235- return getRfc8414Builder (issuer , uri );
236244 }
237245
238- private static Supplier <ClientRegistration .Builder > getRfc8414Builder (URI issuer , URI uri ) {
246+ private static Supplier <ClientRegistration .Builder > getRfc8414Builder (String issuer , UriComponents uri ) {
239247 return () -> {
240- RequestEntity <Void > request = RequestEntity .get (uri ).build ();
248+ RequestEntity <Void > request = RequestEntity .get (uri . toUriString () ).build ();
241249 Map <String , Object > configuration = rest .exchange (request , typeReference ).getBody ();
242250 AuthorizationServerMetadata metadata = parse (configuration , AuthorizationServerMetadata ::parse );
243- ClientRegistration .Builder builder = withProviderConfiguration (metadata , issuer . toASCIIString () );
251+ ClientRegistration .Builder builder = withProviderConfiguration (metadata , issuer );
244252 URI jwkSetUri = metadata .getJWKSetURI ();
245253 if (jwkSetUri != null ) {
246254 builder .jwkSetUri (jwkSetUri .toASCIIString ());
0 commit comments