gpt4 book ai didi

java - 如何使用 Java 在 SAML 2.0 中的签名下添加 KeyInfo 和 X509Data

转载 作者:行者123 更新时间:2023-11-30 03:20:42 25 4
gpt4 key购买 nike

我对 SAML 完全陌生,我只是构建了 saml,但根据要求我还需要添加 KeyInfo 和 x509 证书节点,包括客户端的公共(public)证书,我使用下面的代码来生成签名元素,但不知道如何添加签名内的 KeyInfo 和 X509Data。需要这方面的帮助吗?

BasicX509Credential signingCredential = new BasicX509Credential();
//Namespace nameSpaceSAML = new Namespace("http://www.w3.org/2000/09/xmldsig#","ds");
KeyStore keyStore = getKeyStore( signingKeyStorePath,signingKeyStorePassword);
PrivateKey privateKey = getPrivateKey(keyStore,signingKeyalias,signingKeyStorePassword );
signingCredential.setPrivateKey(privateKey);
signature = (Signature) Configuration.getBuilderFactory().getBuilder(Signature.DEFAULT_ELEMENT_NAME).buildObject(Signature.DEFAULT_ELEMENT_NAME);
signature.setSigningCredential(signingCredential);
signature.setSignatureAlgorithm(SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA1);
signature.setCanonicalizationAlgorithm(SignatureConstants.ALGO_ID_C14N_EXCL_OMIT_COMMENTS);

最佳答案

如果您想要更少的代码,可以使用一个用于签名的辅助类来执行此操作。

X509KeyInfoGeneratorFactory x509Factory = new X509KeyInfoGeneratorFactory();
x509Factory.setEmitEntityCertificate(true);
x509Factory.setEmitEntityCertificateChain(true);
x509Factory.setEmitX509IssuerSerial(true);
x509Factory.setEmitX509SubjectName(true);

Configuration.getGlobalSecurityConfiguration().getKeyInfoGeneratorManager().registerFactory("x509emitingKeyInfoGenerator", x509Factory);

SecurityHelper.prepareSignatureParams(signature, SPCredentials.getCredential(), null, "x509emitingKeyInfoGenerator");

这设置了 KeyInfo、签名算法等。使用工厂上的 setEmit 方法来设置应添加到 KeyInfo 的内容

有关更多信息,请阅读 my blog post on it 。我还写了一个book on OpenSAML我在其中详细解释了签名和加密功能等。

关于java - 如何使用 Java 在 SAML 2.0 中的签名下添加 KeyInfo 和 X509Data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31403071/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com