mirror of
				https://github.com/spring-projects/spring-security.git
				synced 2025-10-31 14:48:54 +00:00 
			
		
		
		
	Remove validation for unsupported grant types
Closes gh-9828
This commit is contained in:
		
							parent
							
								
									8de631d5c6
								
							
						
					
					
						commit
						9b05afdee8
					
				| @ -23,7 +23,6 @@ import java.util.List; | |||||||
| import java.util.Map; | import java.util.Map; | ||||||
| import java.util.function.Supplier; | import java.util.function.Supplier; | ||||||
| 
 | 
 | ||||||
| import com.nimbusds.oauth2.sdk.GrantType; |  | ||||||
| import com.nimbusds.oauth2.sdk.ParseException; | import com.nimbusds.oauth2.sdk.ParseException; | ||||||
| import com.nimbusds.oauth2.sdk.as.AuthorizationServerMetadata; | import com.nimbusds.oauth2.sdk.as.AuthorizationServerMetadata; | ||||||
| import com.nimbusds.openid.connect.sdk.op.OIDCProviderMetadata; | import com.nimbusds.openid.connect.sdk.op.OIDCProviderMetadata; | ||||||
| @ -242,13 +241,6 @@ public final class ClientRegistrations { | |||||||
| 		String name = URI.create(issuer).getHost(); | 		String name = URI.create(issuer).getHost(); | ||||||
| 		ClientAuthenticationMethod method = getClientAuthenticationMethod(issuer, | 		ClientAuthenticationMethod method = getClientAuthenticationMethod(issuer, | ||||||
| 				metadata.getTokenEndpointAuthMethods()); | 				metadata.getTokenEndpointAuthMethods()); | ||||||
| 		List<GrantType> grantTypes = metadata.getGrantTypes(); |  | ||||||
| 		// If null, the default includes authorization_code |  | ||||||
| 		if (grantTypes != null && !grantTypes.contains(GrantType.AUTHORIZATION_CODE)) { |  | ||||||
| 			throw new IllegalArgumentException( |  | ||||||
| 					"Only AuthorizationGrantType.AUTHORIZATION_CODE is supported. The issuer \"" + issuer |  | ||||||
| 							+ "\" returned a configuration of " + grantTypes); |  | ||||||
| 		} |  | ||||||
| 		Map<String, Object> configurationMetadata = new LinkedHashMap<>(metadata.toJSONObject()); | 		Map<String, Object> configurationMetadata = new LinkedHashMap<>(metadata.toJSONObject()); | ||||||
| 		// @formatter:off | 		// @formatter:off | ||||||
| 		return ClientRegistration.withRegistrationId(name) | 		return ClientRegistration.withRegistrationId(name) | ||||||
|  | |||||||
| @ -240,24 +240,22 @@ public class ClientRegistrationsTests { | |||||||
| 		assertThat(registration.getAuthorizationGrantType()).isEqualTo(AuthorizationGrantType.AUTHORIZATION_CODE); | 		assertThat(registration.getAuthorizationGrantType()).isEqualTo(AuthorizationGrantType.AUTHORIZATION_CODE); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	/** | 	// gh-9828 | ||||||
| 	 * We currently only support authorization_code, so verify we have a meaningful error |  | ||||||
| 	 * until we add support. |  | ||||||
| 	 */ |  | ||||||
| 	@Test | 	@Test | ||||||
| 	public void issuerWhenGrantTypesSupportedInvalidThenException() { | 	public void issuerWhenImplicitGrantTypeThenSuccess() throws Exception { | ||||||
| 		this.response.put("grant_types_supported", Arrays.asList("implicit")); | 		this.response.put("grant_types_supported", Arrays.asList("implicit")); | ||||||
| 		assertThatIllegalArgumentException().isThrownBy(() -> registration("")) | 		ClientRegistration registration = registration("").build(); | ||||||
| 				.withMessageContaining("Only AuthorizationGrantType.AUTHORIZATION_CODE is supported. The issuer \"" | 		// The authorization_code grant type is still the default | ||||||
| 						+ this.issuer + "\" returned a configuration of [implicit]"); | 		assertThat(registration.getAuthorizationGrantType()).isEqualTo(AuthorizationGrantType.AUTHORIZATION_CODE); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | 	// gh-9828 | ||||||
| 	@Test | 	@Test | ||||||
| 	public void issuerWhenOAuth2GrantTypesSupportedInvalidThenException() { | 	public void issuerWhenOAuth2JwtBearerGrantTypeThenSuccess() throws Exception { | ||||||
| 		this.response.put("grant_types_supported", Arrays.asList("implicit")); | 		this.response.put("grant_types_supported", Arrays.asList("urn:ietf:params:oauth:grant-type:jwt-bearer")); | ||||||
| 		assertThatIllegalArgumentException().isThrownBy(() -> registrationOAuth2("", null)) | 		ClientRegistration registration = registrationOAuth2("", null).build(); | ||||||
| 				.withMessageContaining("Only AuthorizationGrantType.AUTHORIZATION_CODE is supported. The issuer \"" | 		// The authorization_code grant type is still the default | ||||||
| 						+ this.issuer + "\" returned a configuration of [implicit]"); | 		assertThat(registration.getAuthorizationGrantType()).isEqualTo(AuthorizationGrantType.AUTHORIZATION_CODE); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	@Test | 	@Test | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user