diff --git a/src/main/java/net/gepafin/tendermanagement/config/SamlSuccessHandler.java b/src/main/java/net/gepafin/tendermanagement/config/SamlSuccessHandler.java index c58318a2..d9eb870c 100644 --- a/src/main/java/net/gepafin/tendermanagement/config/SamlSuccessHandler.java +++ b/src/main/java/net/gepafin/tendermanagement/config/SamlSuccessHandler.java @@ -74,22 +74,22 @@ public class SamlSuccessHandler implements AuthenticationSuccessHandler { String samlResponse = samlAuth.getSaml2Response(); logger.info("Raw SAML Response: " + samlResponse); - // Parsing the SAML response as XML + // If samlResponse is already in XML format, do not Base64 decode it DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setNamespaceAware(true); DocumentBuilder builder = factory.newDocumentBuilder(); - Document document = builder.parse(new ByteArrayInputStream(Base64.getDecoder().decode(samlResponse))); - - // Extracting ID, InResponseTo, and IssueInstant from the Response element + Document document = builder.parse(new ByteArrayInputStream(samlResponse.getBytes())); // Remove the Base64 decoding + + // Extracting ID, InResponseTo, and IssueInstant from the Response element Element responseElement = (Element) document.getElementsByTagNameNS("urn:oasis:names:tc:SAML:2.0:protocol", "Response").item(0); String responseId = responseElement.getAttribute("ID"); String inResponseTo = responseElement.getAttribute("InResponseTo"); String issueInstant = responseElement.getAttribute("IssueInstant"); - + logger.info("SAML Response ID: " + responseId); logger.info("InResponseTo: " + inResponseTo); logger.info("IssueInstant: " + issueInstant); - + String redirectUrl = feBaseUrl; logger.info("SAML login successful for user: " + principal.getName());