如果您通過下面的鏈接,正好我必須在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