我需要生成SAML断言的KeyInfo元素,该断言具有带X509证书的X509Data元素和带有公钥的KeyValue元素。它应该是这样的:
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:X509Data>
<ds:X509Certificate>MIIGLTCquvS ... </ds:X509Certificate>
</ds:X509Data>
<ds:KeyValue>
<ds:RSAKeyValue>
<ds:Modulus>vOksZtPkaxkdxN ..... </ds:Modulus>
<ds:Exponent>AQAB</ds:Exponent>
</ds:RSAKeyValue>
</ds:KeyValue>
</ds:KeyInfo>
我使用Wss4jOutInterceptor和CXF与SAMLCallback生成断言。我可以让它生成X509Data或KeyValue,但不能同时生成两者。这必须同时包含在SubjectConfirmationData和Assertion的签名中。我已经看到了一些使用OpenSAML进行此操作的答案,并且手动构建了所有这些答案,但我希望使用WSS4J的方法更简单。
先谢谢
答案 0 :(得分:0)
您可以通过在KeyInfoBean.setElement()上设置DOM元素来添加自定义KeyInfo元素。目前还没有办法对Signature KeyInfos做同样的事情。我在当前的代码库中解决了这个问题:
https://issues.apache.org/jira/browse/WSS-619
这是包含测试的提交:
http://svn.apache.org/viewvc?view=revision&revision=1817084
虽然可能需要一些努力才能通过CXF的WSS4JOutInterceptor进行连接。