/** {@inheritDoc} */ protected void processChildElement(XMLObject parentSAMLObject, XMLObject childSAMLObject) throws UnmarshallingException { Response response = (Response) parentSAMLObject; if (childSAMLObject instanceof Assertion) { response.getAssertions().add((Assertion) childSAMLObject); } else if (childSAMLObject instanceof Status) { response.setStatus((Status) childSAMLObject); } else { super.processChildElement(parentSAMLObject, childSAMLObject); } }
throws MessageDecodingException { messageContext.setInboundSAMLMessageId(response.getID()); messageContext.setInboundSAMLMessageIssueInstant(response.getIssueInstant()); List<Assertion> assertions = ((Response) response).getAssertions(); if (assertions != null && assertions.size() > 0) { log.info("Attempting to extract issuer from enclosed SAML 1.x Assertion(s)"); if (assertion != null && assertion.getIssuer() != null) { if (issuer != null && !issuer.equals(assertion.getIssuer())) { throw new MessageDecodingException("SAML 1.x assertions, within response " + response.getID() + " contain different issuer IDs");
/** * Validates that the response has a status. * * @param response response to validate * * @throws ValidationException thrown if the response does not have a status */ protected void validateStatus(Response response) throws ValidationException{ if (response.getStatus() == null) { throw new ValidationException("No Status present"); } } }
@Override protected void prepareResponse(final Response response, final Map<String, Object> model) { final Authentication authentication = getAssertionFrom(model).getChainedAuthentications().get(0); final DateTime issuedAt = response.getIssueInstant(); final Service service = getAssertionFrom(model).getService(); final Object o = authentication.getAttributes().get(RememberMeCredentials.AUTHENTICATION_ATTRIBUTE_REMEMBER_ME); final boolean isRemembered = o == Boolean.TRUE && !getAssertionFrom(model).isFromNewLogin(); // Build up the SAML assertion containing AuthenticationStatement and AttributeStatement final Assertion assertion = newSamlObject(Assertion.class); assertion.setID(generateId()); assertion.setIssueInstant(issuedAt); assertion.setIssuer(this.issuer); assertion.setConditions(newConditions(issuedAt, service.getId())); final AuthenticationStatement authnStatement = newAuthenticationStatement(authentication); assertion.getAuthenticationStatements().add(authnStatement); final Map<String, Object> attributes = authentication.getPrincipal().getAttributes(); if (!attributes.isEmpty() || isRemembered) { assertion.getAttributeStatements().add( newAttributeStatement(newSubject(authentication.getPrincipal().getId()), attributes, isRemembered)); } response.setStatus(newStatus(StatusCode.SUCCESS, null)); response.getAssertions().add(assertion); }
if (response.getAssertions() != null) { for (org.opensaml.saml1.core.Assertion assertion : response.getAssertions()) { signObject(assertion.getSignature()); signObject(response.getSignature()); } else if (xmlObject instanceof org.opensaml.saml2.core.Response) { org.opensaml.saml2.core.Response response =
protected void renderMergedOutputModel( final Map<String, Object> model, final HttpServletRequest request, final HttpServletResponse response) throws Exception { response.setCharacterEncoding(this.encoding); final WebApplicationService service = this.samlArgumentExtractor.extractService(request); final String serviceId = service != null ? service.getId() : "UNKNOWN"; try { final Response samlResponse = newSamlObject(Response.class); samlResponse.setID(generateId()); samlResponse.setIssueInstant(new DateTime()); samlResponse.setVersion(SAMLVersion.VERSION_11); samlResponse.setRecipient(serviceId); if (service instanceof SamlService) { final SamlService samlService = (SamlService) service; if (samlService.getRequestID() != null) { samlResponse.setInResponseTo(samlService.getRequestID()); } } prepareResponse(samlResponse, model); final BasicSAMLMessageContext messageContext = new BasicSAMLMessageContext(); messageContext.setOutboundMessageTransport(new HttpServletResponseAdapter(response, request.isSecure())); messageContext.setOutboundSAMLMessage(samlResponse); this.encoder.encode(messageContext); } catch (final Exception e) { this.log.error("Error generating SAML response for service {}.", serviceId); throw e; } }
for (Assertion assertion : artifactContext.getOutboundSAMLMessage().getAssertions()) { artifact = artifactBuilder.buildArtifact(artifactContext, assertion); if(artifact == null){
if (response.getAssertions() != null) { for (org.opensaml.saml1.core.Assertion assertion : response.getAssertions()) { signObject(assertion.getSignature()); signObject(response.getSignature()); } else if (xmlObject instanceof org.opensaml.saml2.core.Response) { org.opensaml.saml2.core.Response response =