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

如何在java中创建和处理saml断言?,java,opensaml,Java,Opensaml,我是opensaml-j的初学者,我想创建一个断言来委托功能。我用SAML编写了一个断言,如下图: 有人能帮我用opensaml-j创建图中所示的断言吗 如何处理后一种方法呢?因此创建断言的一种方法是: AuthnRequest authnRequest = new AuthnRequestBuilder().buildObject(); 设置SAML2.0请求的必需属性。由您决定SAML请求中的内容 authnRequest.setID(<>)); authnRequest.se

我是opensaml-j的初学者,我想创建一个断言来委托功能。我用SAML编写了一个断言,如下图:

有人能帮我用opensaml-j创建图中所示的断言吗
如何处理后一种方法呢?

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

AuthnRequest authnRequest = new AuthnRequestBuilder().buildObject();
设置SAML2.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);
authnRequest.setID());
authnRequest.setVersion(SAMLVersion.VERSION_20);
authnRequest.setIssueInstant(new DateTime());
setProtocolBinding(httpBinding);
authnRequest.setIssuer(发行人);
authnRequest.setNameIDPolicy(nameIdPolicy);
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;
}
//签名验证
Signature Signature=samlResponse.getSignature();
SignatureValidator SignatureValidator=新的SignatureValidator(
新X509CredentialImplementation();
试一试{
signatureValidator.validate(签名);
}捕获(ValidationException e){
LOGGER.error(“XML签名不是**验证**,或者验证操作期间出错”);
返回false;
}
目前还不清楚如何以及在何处发送断言。但这是基本过程

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

感谢您的帮助,我真的很感激您,我只想问一下其他标签(条件、操作、授权决策声明)我将如何创建它们??您能给我一个更详细的示例吗??