如果您通过下面的链接,正好我必须在java中实现相同的逻辑。 https://www.samltool.com/sign_response.php如何使用Open SAML签署SAML响应
我有一个没有签名的XML。在发送给服务提供商之前,我必须签署该消息。我有私钥和公钥以及无符号的xml。
我是SAML的新手,有人可以帮助我提供一个代码片段,确切地说使用公钥和私钥签名消息的方法。
需要你在这方面的投入。
感谢, 阿希什
如果您通过下面的链接,正好我必须在java中实现相同的逻辑。 https://www.samltool.com/sign_response.php如何使用Open SAML签署SAML响应
我有一个没有签名的XML。在发送给服务提供商之前,我必须签署该消息。我有私钥和公钥以及无符号的xml。
我是SAML的新手,有人可以帮助我提供一个代码片段,确切地说使用公钥和私钥签名消息的方法。
需要你在这方面的投入。
感谢, 阿希什
您创建一个签名objecy并在
signature.setSigningCredential(credential);
signature.setSignatureAlgorithm(SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA1);
signature.setCanonicalizationAlgorithm(SignatureConstants.ALGO_ID_C14N_EXCL_OMIT_COMMENTS);
设置签名属性,然后设置签名对象的响应
.setSignature(signature)
接下来马歇尔响应对象
XMLObjectProviderRegistrySupport
.getMarshallerFactory()
.getMarshaller(response)
.marshall(response);
最后您使用签名者类中this post on my blog
履行签收
Signer.signObject(signature);
我有更多的信息,您还可以使用onelogin SAML的Java utils的从Onelogin Saml Java - 一个似乎更容易(他们有方法加载公钥,私钥,字符串文件等等。然后您可以使用它来签署整个SAML响应或签署断言,然后回复:
Document document = Util.loadXML(saml); //loads string to document
//load private key and certificate
X509Certificate cert = Util.loadCert(pubKeyBytes);
PrivateKey privateKey = Util.loadPrivateKey(privKeyBytes);
//sign the response
String signedResponse = Util.addSign(document, privateKey, cert, null);
使用这个库,只需添加
<dependency>
<groupId>com.onelogin</groupId>
<artifactId>java-saml</artifactId>
<version>2.0.0</version>
</dependency>
依赖于你的项目的pom.xml
你使用哪种版本OpenSAML的? – gusto2