如何在java中创建和处理saml断言?

时间:2017-05-15 13:14:39

标签: java opensaml

我是opensaml-j的初学者,我想创建一个断言来委托我在SAML中编写断言的功能,这里是图像:SAML-based representation of capability

所以有人可以帮我创建opensaml-j图像中显示的断言 以及如何处理后者?

1 个答案:

答案 0 :(得分:0)

因此,创建断言的一种方法是:

AuthnRequest authnRequest = new AuthnRequestBuilder().buildObject();

设置SAML 2.0请求的必需属性。您可以自行决定SAML请求中的内容。

authnRequest.setID(<>));
authnRequest.setVersion(SAMLVersion.VERSION_20);
authnRequest.setIssueInstant(new DateTime());

authnRequest.setProtocolBinding(httpBinding);
authnRequest.setIssuer(issuer);
authnRequest.setNameIDPolicy(nameIdPolicy);
authnRequest.setRequestedAuthnContext(requestedAuthnContext);
authnRequest.setDestination(idpUrl);

在发送之前,您可能需要签名,这可以通过在您的请求中添加签名来完成。

收到SMAL回复后,您可以通过验证其签名来验证它:

// Signature validation
Signature signature = samlResponse.getSignature();
SignatureValidator signatureValidator = new SignatureValidator(
new X509CredentialImplementation(<>);

try {
    signatureValidator.validate(signature);
} catch (ValidationException e) {
    LOGGER.error("XML signature is not **validate**, or there is an error during the validation operation");
  return false;
}

目前尚不清楚您希望如何以及在何处发送断言。但这是基本程序。

  • 创建请求。发送。
  • 等待服务提供商或其他任何人的回应。
  • 验证回复的签名。
  • 如果是有效回复,您可以向用户授予必要的权限。