/** {@inheritDoc} */ protected void processChildElement(XMLObject parentElement, XMLObject childElement) throws UnmarshallingException { Request request = (Request) parentElement; try { if (childElement instanceof Query) { request.setQuery((Query) childElement); } else if (childElement instanceof AssertionIDReference) { request.getAssertionIDReferences().add((AssertionIDReference) childElement); } else if (childElement instanceof AssertionArtifact) { request.getAssertionArtifacts().add((AssertionArtifact) childElement); } else { super.processChildElement(parentElement, childElement); } } catch (IllegalArgumentException e) { throw new UnmarshallingException(e); } }
/** * Extract information from a SAML RequestAbstractType message. * * @param messageContext current message context * @param abstractRequest the SAML message to process */ protected void extractRequestInfo(SAMLMessageContext messageContext, RequestAbstractType abstractRequest) { messageContext.setInboundSAMLMessageId(abstractRequest.getID()); messageContext.setInboundSAMLMessageIssueInstant(abstractRequest.getIssueInstant()); if (abstractRequest instanceof Request) { Request request = (Request) abstractRequest; if (request.getAttributeQuery() != null) { extractAttributeQueryInfo(messageContext, request.getAttributeQuery()); } if (request.getAuthorizationDecisionQuery() != null) { extractAuthorizationDecisionQueryInfo(messageContext, request.getAuthorizationDecisionQuery()); } if (request.getAssertionArtifacts() != null) { extractAssertionArtifactInfo(messageContext, request.getAssertionArtifacts()); } } }
/** * Validates thats the request has an some form of assertion (directly, reference, or artifact) or query, but not * both. * * @param request the request to validate * * @throws ValidationException thrown if the request has more than one assertion or both an assertion and a query */ protected void validateAssertion(Request request) throws ValidationException { if (request.getQuery() != null) { if (request.getAssertionArtifacts().size() != 0) { throw new ValidationException("Both Query and one or more AssertionAtrifacts present"); } if (request.getAssertionIDReferences().size() != 0) { throw new ValidationException("Both Query and one ore more AsertionIDReferences present"); } } else if (request.getAssertionArtifacts().size() != 0) { if (request.getAssertionIDReferences().size() != 0) { throw new ValidationException( "Both one or more AssertionAtrifacts and one ore more AsertionIDReferences present"); } } else if (request.getAssertionIDReferences().size() == 0) { throw new ValidationException("No AssertionAtrifacts, No Query, and No AsertionIDReferences present"); } } }
(org.opensaml.saml1.core.Request) xmlObject; signObject(request.getSignature());
(org.opensaml.saml1.core.Request) xmlObject; signObject(request.getSignature());