public static LogoutResponse createSAMLLogoutResponse( String inResponseTo, String issuer, Status status, String destination ) { if (logoutResponseBuilder == null) { logoutResponseBuilder = (SAMLObjectBuilder<LogoutResponse>) builderFactory.getBuilder(LogoutResponse.DEFAULT_ELEMENT_NAME); } LogoutResponse response = logoutResponseBuilder.buildObject(); response.setID(UUID.randomUUID().toString()); response.setIssueInstant(new DateTime()); response.setInResponseTo(inResponseTo); response.setIssuer(createIssuer(issuer)); response.setStatus(status); response.setVersion(SAMLVersion.VERSION_20); response.setDestination(destination); return response; }
@SuppressWarnings("unchecked") protected final LogoutResponse buildLogoutResponse(final SAML2MessageContext context, final SingleLogoutService ssoService) { final SAMLObjectBuilder<LogoutResponse> builder = (SAMLObjectBuilder<LogoutResponse>) this.builderFactory .getBuilder(LogoutResponse.DEFAULT_ELEMENT_NAME); final LogoutResponse response = builder.buildObject(); final SAMLSelfEntityContext selfContext = context.getSAMLSelfEntityContext(); response.setID(SAML2Utils.generateID()); response.setIssuer(getIssuer(selfContext.getEntityId())); response.setIssueInstant(DateTime.now(DateTimeZone.UTC).plusSeconds(this.issueInstantSkewSeconds)); response.setVersion(SAMLVersion.VERSION_20); response.setDestination(ssoService.getLocation()); response.setStatus(getSuccess()); final SAMLObject originalMessage = context.getMessage(); if (originalMessage != null && originalMessage instanceof RequestAbstractTypeImpl) { response.setInResponseTo(((RequestAbstractTypeImpl) originalMessage).getID()); } return response; }
protected org.opensaml.saml.saml2.core.LogoutResponse internalToXml(LogoutResponse response) { org.opensaml.saml.saml2.core.LogoutResponse result = buildSAMLObject(org.opensaml.saml.saml2.core.LogoutResponse.class); result.setInResponseTo(response.getInResponseTo()); result.setID(response.getId()); result.setIssueInstant(response.getIssueInstant()); result.setDestination(response.getDestination()); org.opensaml.saml.saml2.core.Issuer issuer = buildSAMLObject(org.opensaml.saml.saml2.core.Issuer.class); issuer.setValue(response.getIssuer().getValue()); issuer.setNameQualifier(response.getIssuer().getNameQualifier()); issuer.setSPNameQualifier(response.getIssuer().getSpNameQualifier()); result.setIssuer(issuer); org.opensaml.saml.saml2.core.Status status = buildSAMLObject(org.opensaml.saml.saml2.core.Status.class); org.opensaml.saml.saml2.core.StatusCode code = buildSAMLObject(org.opensaml.saml.saml2.core.StatusCode.class); code.setValue(response.getStatus().getCode().toString()); status.setStatusCode(code); if (hasText(response.getStatus().getMessage())) { StatusMessage message = buildSAMLObject(StatusMessage.class); message.setMessage(response.getStatus().getMessage()); status.setStatusMessage(message); } result.setStatus(status); if (response.getSigningKey() != null) { this.signObject(result, response.getSigningKey(), response.getAlgorithm(), response.getDigest()); } return result; }