在 .NET 4.0 中对 SamlAssertion 进行签名
本文关键字:SamlAssertion 中对 NET | 更新日期: 2023-09-27 18:36:33
我在.Net 4.0中有一个SamlAssertion。
http://msdn.microsoft.com/en-us/library/system.identitymodel.tokens.samlassertion.aspx
我需要对其进行签名,然后对其进行加密,然后将其发布给业务合作伙伴。我们是身份提供者,负责发起通信。
我在网络上找到的符号方法是期望将 XmlDocument 作为参数发送。 如何将 SamlAssertion 强制转换/转换为可签名的 xml 文档?或者有没有办法在不必投射/转换的情况下签署断言?
以下是我关于可互操作 XML 签名的三部分教程:
http://www.wiktorzychla.com/2012/12/interoperable-xml-digital-signatures-c.htmlhttp://www.wiktorzychla.com/2012/12/interoperable-xml-digital-signatures-c_20.htmlhttp://www.wiktorzychla.com/2012/12/interoperable-xml-digital-signatures-c_4247.html
注意签名文档后附加签名密钥信息的部分。这使收件人可以轻松验证签名是否有效,以及用于对邮件进行签名的密钥是否可以接受。收件人必须同时验证两者!特别是,有效的签名是不够的,因为任何证书都可能用于生成有效的签名。另一方面,您不希望使用任何密钥生成签名,而是使用与 IdP 和信赖方已知的证书相对应的密钥。
您必须分两步执行此操作:首先将断言序列化为 XML,然后使用 .NET 框架中的 SignedXml
类对其进行签名。
请注意签名和加密的内容:是要仅对断言还是整个响应消息进行签名/加密?
你可能会从我写的 SAML2 库中得到一些灵感,我有一些在单元测试中对虚拟消息进行签名的方法: https://github.com/KentorIT/authservices/blob/master/Kentor.AuthServices.Tests/SignedXmlHelper.cs