commit
						ce000ed190
					
				|  | @ -1,5 +1,5 @@ | |||
| /* | ||||
|  * Copyright 2002-2024 the original author or authors. | ||||
|  * Copyright 2002-2025 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. | ||||
|  | @ -160,7 +160,7 @@ class BaseOpenSamlAuthenticationProvider implements AuthenticationProvider { | |||
| 			String inResponseTo = response.getInResponseTo(); | ||||
| 			result = result.concat(validateInResponseTo(token.getAuthenticationRequest(), inResponseTo)); | ||||
| 
 | ||||
| 			String issuer = response.getIssuer().getValue(); | ||||
| 			String issuer = issuer(response); | ||||
| 			String destination = response.getDestination(); | ||||
| 			String location = token.getRelyingPartyRegistration().getAssertionConsumerServiceLocation(); | ||||
| 			if (StringUtils.hasText(destination) && !destination.equals(location)) { | ||||
|  | @ -183,6 +183,13 @@ class BaseOpenSamlAuthenticationProvider implements AuthenticationProvider { | |||
| 		}; | ||||
| 	} | ||||
| 
 | ||||
| 	private static String issuer(Response response) { | ||||
| 		if (response.getIssuer() == null) { | ||||
| 			return null; | ||||
| 		} | ||||
| 		return response.getIssuer().getValue(); | ||||
| 	} | ||||
| 
 | ||||
| 	private static List<String> getStatusCodes(Response response) { | ||||
| 		if (response.getStatus() == null) { | ||||
| 			return List.of(StatusCode.SUCCESS); | ||||
|  | @ -308,7 +315,7 @@ class BaseOpenSamlAuthenticationProvider implements AuthenticationProvider { | |||
| 	} | ||||
| 
 | ||||
| 	private void process(Saml2AuthenticationToken token, Response response) { | ||||
| 		String issuer = response.getIssuer().getValue(); | ||||
| 		String issuer = issuer(response); | ||||
| 		this.logger.debug(LogMessage.format("Processing SAML response from %s", issuer)); | ||||
| 		boolean responseSigned = response.isSigned(); | ||||
| 
 | ||||
|  |  | |||
|  | @ -889,6 +889,15 @@ public class OpenSaml4AuthenticationProviderTests { | |||
| 		provider.authenticate(token); | ||||
| 	} | ||||
| 
 | ||||
| 	// gh-16989 | ||||
| 	@Test | ||||
| 	public void authenticateWhenNullIssuerThenNoNullPointer() { | ||||
| 		OpenSaml4AuthenticationProvider provider = new OpenSaml4AuthenticationProvider(); | ||||
| 		Response response = TestOpenSamlObjects.signedResponseWithOneAssertion((r) -> r.setIssuer(null)); | ||||
| 		Saml2AuthenticationToken token = token(response, verifying(registration())); | ||||
| 		assertThatExceptionOfType(Saml2AuthenticationException.class).isThrownBy(() -> provider.authenticate(token)); | ||||
| 	} | ||||
| 
 | ||||
| 	private <T extends XMLObject> T build(QName qName) { | ||||
| 		return (T) XMLObjectProviderRegistrySupport.getBuilderFactory().getBuilder(qName).buildObject(qName); | ||||
| 	} | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue