| | |
| | | package org.keycloak.protocol.cas.endpoints; |
| | | |
| | | import jakarta.ws.rs.Consumes; |
| | | import jakarta.ws.rs.POST; |
| | | import jakarta.ws.rs.Produces; |
| | | import jakarta.ws.rs.core.MultivaluedMap; |
| | | import jakarta.ws.rs.core.Response; |
| | | import org.keycloak.dom.saml.v1.protocol.SAML11ResponseType; |
| | | import org.keycloak.events.EventBuilder; |
| | | import org.keycloak.events.EventType; |
| | |
| | | import org.keycloak.services.Urls; |
| | | import org.xml.sax.InputSource; |
| | | |
| | | import javax.ws.rs.Consumes; |
| | | import javax.ws.rs.POST; |
| | | import javax.ws.rs.Produces; |
| | | import javax.ws.rs.core.MultivaluedMap; |
| | | import javax.ws.rs.core.Response; |
| | | import javax.xml.namespace.NamespaceContext; |
| | | import javax.xml.xpath.XPath; |
| | | import javax.xml.xpath.XPathExpression; |
| | | import javax.xml.xpath.XPathExpressionException; |
| | | import javax.xml.xpath.XPathFactory; |
| | | import java.io.StringReader; |
| | | import java.util.*; |
| | | import java.util.Collections; |
| | | import java.util.Iterator; |
| | | import java.util.Map; |
| | | import java.util.Optional; |
| | | |
| | | import static org.keycloak.protocol.cas.CASLoginProtocol.TARGET_PARAM; |
| | | |
| | |
| | | @Consumes("text/xml;charset=utf-8") |
| | | @Produces("text/xml;charset=utf-8") |
| | | public Response validate(String input) { |
| | | MultivaluedMap<String, String> queryParams = request.getUri().getQueryParameters(); |
| | | MultivaluedMap<String, String> queryParams = session.getContext().getUri().getQueryParameters(); |
| | | try { |
| | | String soapAction = Optional.ofNullable(request.getHttpHeaders().getHeaderString("SOAPAction")).map(s -> s.trim().replace("\"", "")).orElse(""); |
| | | String soapAction = Optional.ofNullable(session.getContext().getRequestHeaders().getHeaderString("SOAPAction")).map(s -> s.trim().replace("\"", "")).orElse(""); |
| | | if (!soapAction.equals("http://www.oasis-open.org/committees/security")) { |
| | | throw new CASValidationException(CASErrorCode.INTERNAL_ERROR, "Not a validation request", Response.Status.BAD_REQUEST); |
| | | } |
| | |
| | | checkRealm(); |
| | | checkSsl(); |
| | | checkClient(service); |
| | | String issuer = Urls.realmIssuer(request.getUri().getBaseUri(), realm.getName()); |
| | | String issuer = Urls.realmIssuer(session.getContext().getUri().getBaseUri(), realm.getName()); |
| | | String ticket = getTicket(input); |
| | | |
| | | checkTicket(ticket, renew); |