use of org.opensaml.saml.saml2.core.StatusCode in project ddf by codice.
the class SamlProtocol method createStatusCode.
public static StatusCode createStatusCode(String statusValue) {
StatusCode statusCode = statusCodeBuilder.buildObject();
statusCode.setValue(statusValue);
return statusCode;
}
use of org.opensaml.saml.saml2.core.StatusCode in project ddf by codice.
the class SamlAssertionValidatorImpl method createStatus.
/**
* Creates the status object for the response.
*
* @param statusCodeValue
* @param statusMessage
* @return Status
*/
private static Status createStatus(String statusCodeValue, String statusMessage) {
if (statusBuilder == null) {
statusBuilder = (SAMLObjectBuilder<Status>) builderFactory.getBuilder(Status.DEFAULT_ELEMENT_NAME);
}
if (statusCodeBuilder == null) {
statusCodeBuilder = (SAMLObjectBuilder<StatusCode>) builderFactory.getBuilder(StatusCode.DEFAULT_ELEMENT_NAME);
}
if (statusMessageBuilder == null) {
statusMessageBuilder = (SAMLObjectBuilder<StatusMessage>) builderFactory.getBuilder(StatusMessage.DEFAULT_ELEMENT_NAME);
}
Status status = statusBuilder.buildObject();
StatusCode statusCode = statusCodeBuilder.buildObject();
statusCode.setValue(statusCodeValue);
status.setStatusCode(statusCode);
if (statusMessage != null) {
StatusMessage statusMessageObject = statusMessageBuilder.buildObject();
statusMessageObject.setMessage(statusMessage);
status.setStatusMessage(statusMessageObject);
}
return status;
}
use of org.opensaml.saml.saml2.core.StatusCode in project ddf by codice.
the class LogoutRequestService method getSamlpSoapLogoutResponse.
private Response getSamlpSoapLogoutResponse(LogoutWrapper<LogoutResponse> samlResponse, String statusCode, String statusMessage) {
if (samlResponse == null) {
return Response.serverError().build();
}
LOGGER.debug("Configuring SAML Response for SOAP.");
Document doc = DOMUtils.createDocument();
doc.appendChild(doc.createElement(ROOT_NODE_NAME));
LOGGER.debug("Setting SAML status on Response for SOAP");
if (statusCode != null) {
if (statusMessage != null) {
samlResponse.getMessage().setStatus(SamlProtocol.createStatus(statusCode, statusMessage));
} else {
samlResponse.getMessage().setStatus(SamlProtocol.createStatus(statusCode));
}
}
try {
LOGGER.debug("Signing SAML Response for SOAP.");
LogoutResponse logoutResponse = simpleSign.forceSignSamlObject(samlResponse.getMessage());
Envelope soapMessage = SamlProtocol.createSoapMessage(logoutResponse);
LOGGER.debug("Converting SAML Response to DOM");
String assertionResponse = DOM2Writer.nodeToString(OpenSAMLUtil.toDom(soapMessage, doc));
String encodedSamlResponse = Base64.getEncoder().encodeToString(assertionResponse.getBytes(StandardCharsets.UTF_8));
return Response.ok(encodedSamlResponse).build();
} catch (SignatureException | WSSecurityException | XMLStreamException e) {
LOGGER.debug("Failure constructing SOAP LogoutResponse", e);
return Response.serverError().build();
}
}
use of org.opensaml.saml.saml2.core.StatusCode in project verify-hub by alphagov.
the class EncryptedResponseFromIdpValidator method fail.
private void fail(Status status) {
StatusCode statusCode = status.getStatusCode();
StatusCode subStatusCode = statusCode.getStatusCode();
if (subStatusCode == null)
throw new SamlValidationException(invalidStatusCode(statusCode.getValue()));
SamlValidationSpecificationFailure failure = invalidSubStatusCode(subStatusCode.getValue(), statusCode.getValue());
throw new SamlValidationException(failure);
}
use of org.opensaml.saml.saml2.core.StatusCode in project verify-hub by alphagov.
the class EncryptedResponseFromMatchingServiceValidator method validateStatusAndSubStatus.
protected void validateStatusAndSubStatus(Response response) {
StatusCode statusCode = response.getStatus().getStatusCode();
String statusCodeValue = statusCode.getValue();
StatusCode subStatusCode = statusCode.getStatusCode();
if (StatusCode.REQUESTER.equals(statusCodeValue))
return;
if (subStatusCode == null)
throw new SamlValidationException(missingSubStatus());
String subStatusCodeValue = subStatusCode.getValue();
if (!StatusCode.RESPONDER.equals(statusCodeValue)) {
validateSuccessResponse(statusCodeValue, subStatusCodeValue);
} else {
validateResponderError(subStatusCodeValue);
}
}
Aggregations