1

我在 .Net 4.0 中有一个 SamlAssertion。
http://msdn.microsoft.com/en-us/library/system.identitymodel.tokens.samlassertion.aspx

我需要对其进行签名,然后对其进行加密,然后将其发布给业务合作伙伴。我们是身份提供者并发起通信。

我在网上找到的 sign 方法期望将 XmlDocument 作为参数发送。如何将 SamlAssertion 转换/转换为可签名的 xml 文档?或者有没有办法签署断言而不必强制转换/转换?

4

2 回答 2

3

这是我关于可互操作 XML 签名的三部分教程:

http://www.wiktorzychla.com/2012/12/interoperable-xml-digital-signatures-c.html http://www.wiktorzychla.com/2012/12/interoperable-xml-digital-signatures-c_20.html http://www.wiktorzychla.com/2012/12/interoperable-xml-digital-signatures-c_4247.html

注意签名文档附加签名密钥信息的部分。这使您的收件人可以轻松验证签名是否有效以及用于签署消息的密钥是否可接受。收件人必须验证两者!特别是,一个有效的签名是不够的,因为任何证书都可能被用来生成一个有效的签名。另一方面,您不希望使用任何密钥生成签名,而是使用与 IdP 和依赖方都知道的证书相对应的密钥。

于 2013-10-30T10:43:40.913 回答
1

您必须分两步执行此操作:首先将 Assertion 序列化为 XML,然后使用SignedXml.NET 框架中的类对其进行签名。

请注意您要签名和加密的内容:您只想签名/加密断言还是整个响应消息?

您可能会从我编写的 SAML2 库中获得一些灵感,其中我有一些在单元测试中签署虚拟消息的方法:https://github.com/KentorIT/authservices/blob/master/Kentor.AuthServices.Tests/SignedXmlHelper。 CS

于 2013-10-30T10:35:39.410 回答