/** * Create a new SAML response object. * @param id the id * @param issueInstant the issue instant * @param recipient the recipient * @param service the service * @return the response */ public Response newResponse(final String id, final DateTime issueInstant, final String recipient, final WebApplicationService service) { final Response samlResponse = newSamlObject(Response.class); samlResponse.setID(id); samlResponse.setIssueInstant(issueInstant); samlResponse.setVersion(SAMLVersion.VERSION_11); samlResponse.setInResponseTo(recipient); if (service instanceof SamlService) { final SamlService samlService = (SamlService) service; final String requestId = samlService.getRequestID(); if (StringUtils.isNotBlank(requestId)) { samlResponse.setInResponseTo(requestId); } } return samlResponse; }
@Nonnull @Override protected Response buildSamlResponse( @Nonnull final RequestContext springRequestContext, @Nonnull final ProfileRequestContext<SAMLObject, SAMLObject> profileRequestContext) { final TicketValidationRequest request = getCASRequest(profileRequestContext); final TicketValidationResponse validationResponse = getCASResponse(profileRequestContext); final Response response = newSAMLObject(Response.class, Response.DEFAULT_ELEMENT_NAME); response.setID(request.getTicket()); response.setIssueInstant(DateTime.now()); final Status status = newSAMLObject(Status.class, Status.DEFAULT_ELEMENT_NAME); final StatusCode statusCode = newSAMLObject(StatusCode.class, StatusCode.DEFAULT_ELEMENT_NAME); statusCode.setValue(new QName(NAMESPACE, validationResponse.getErrorCode())); status.setStatusCode(statusCode); final StatusMessage message = newSAMLObject(StatusMessage.class, StatusMessage.DEFAULT_ELEMENT_NAME); message.setMessage(validationResponse.getErrorDetail()); status.setStatusMessage(message); response.setStatus(status); return response; } }
/** {@inheritDoc} */ @Override protected void doExecute(@Nonnull final ProfileRequestContext profileRequestContext) { final XMLObjectBuilderFactory bf = XMLObjectProviderRegistrySupport.getBuilderFactory(); final SAMLObjectBuilder<StatusCode> statusCodeBuilder = (SAMLObjectBuilder<StatusCode>) bf.<StatusCode>getBuilderOrThrow(StatusCode.DEFAULT_ELEMENT_NAME); final SAMLObjectBuilder<Status> statusBuilder = (SAMLObjectBuilder<Status>) bf.<Status>getBuilderOrThrow(Status.DEFAULT_ELEMENT_NAME); final SAMLObjectBuilder<Response> responseBuilder = (SAMLObjectBuilder<Response>) bf.<Response>getBuilderOrThrow(Response.DEFAULT_ELEMENT_NAME); final StatusCode statusCode = statusCodeBuilder.buildObject(); statusCode.setValue(StatusCode.SUCCESS); final Status status = statusBuilder.buildObject(); status.setStatusCode(statusCode); final Response response = responseBuilder.buildObject(); response.setID(idGenerator.generateIdentifier()); response.setIssueInstant(new DateTime(ISOChronology.getInstanceUTC())); response.setStatus(status); response.setVersion(SAMLVersion.VERSION_11); profileRequestContext.getOutboundMessageContext().setMessage(response); }
response.setID(request.getTicket()); response.setIssueInstant(DateTime.now()); final Status status = newSAMLObject(Status.class, Status.DEFAULT_ELEMENT_NAME);