我正在使用openSAML v3.2.0构建一个org.opensaml.saml.saml2.core.Response。我已签署回复并想提交。
我尝试过关注openSAML书(OpenSAML v3指南),但它似乎对我的场景没有帮助。我有一个c#demo项目,基本上通过HTTPPost提交响应。我在用opensaml在java中编写相同的东西。我是否必须按照本书的建议制作一件神器?书中的例子表明我使用SOAP发送ArtifactResolve,即使我正在构建一个Response。
使用上面的响应对象,我想将响应对象发布到idp。
实现这一目标的最佳方法是什么? - 创建一个Envelope对象是个好主意吗?使用saml2包中的响应对象,如何创建org.opensaml.soap.soap11.Envelope?
非常感谢任何帮助!谢谢!
答案 0 :(得分:1)
你不必像书中所说的那样建造神器。 使用Artifacts具有一定的安全性,隐私性和其他好处。 看看Scott T.回答了解使用Artifact绑定的好处 - https://stackoverflow.com/a/13618537/1163424
根据你的问题, 您还可以使用POST绑定将响应传递给SP。 这样做的方法是将您的Response XML(带有已签名的断言)编码为Base64字符串,并使客户端web-app将其POST到SP ACS(断言消费者服务)。
您将带有base64字符串的SAMLResponse
参数作为值传递,并使用RelayState
参数来设置SP网络应用中的状态,如SAML 2 Bindings specification第21页中所述
另外,我建议使用SAML tool来验证您的回复消息。