C# 在.NET 4.0中签署SamlAssertion

C# 在.NET 4.0中签署SamlAssertion,c#,.net-4.0,saml-2.0,C#,.net 4.0,Saml 2.0,我在.Net 4.0中有一个samlasertion。 我需要对它进行签名,然后加密,然后将其发送给业务合作伙伴。我们是身份提供者并发起通信 我在web上找到的sign方法希望将XmlDocument作为参数发送。如何将SamlAssertion强制转换为可签名的xml文档?或者有没有一种方法可以在不强制转换/转换的情况下对断言进行签名 您必须分两步完成此操作:首先将断言序列化为XML,然后使用.NET framework中的类对其进行签名 请注意您正在签名和加密的内容:您想只对断言或整个响应

我在.Net 4.0中有一个samlasertion。

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


我在web上找到的sign方法希望将XmlDocument作为参数发送。如何将SamlAssertion强制转换为可签名的xml文档?或者有没有一种方法可以在不强制转换/转换的情况下对断言进行签名

您必须分两步完成此操作:首先将断言序列化为XML,然后使用.NET framework中的类对其进行签名

请注意您正在签名和加密的内容:您想只对断言或整个响应消息进行签名/加密吗


您可能会从我编写的SAML2库中得到一些启发,在这里我有一些在单元测试中对虚拟消息进行签名的方法:

您必须分两步来完成这项工作:首先将断言序列化为XML,然后使用.NET framework中的类对其进行签名

请注意您正在签名和加密的内容:您想只对断言或整个响应消息进行签名/加密吗


您可能会从我编写的SAML2库中得到一些启发,在这里我有一些在单元测试中签名虚拟消息的方法:

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


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

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


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

谢谢您,Anders。我将通读你的图书馆。我将升级到VS2012以获得支持SAML2.0的.Net4.5。目前,当我尝试使用SignedXml类对我创建的SAML1.0断言(VS2010和.Net4.0)进行签名时,代码引发了一个错误。我认为这是因为ID属性名为“AssertionID”而不是“ID”。我可以完整地对文档进行签名,但不能仅对断言节点进行签名。@这是一个新问题,请不要将其作为注释发布,而是作为一个新问题发布。谢谢你,Anders。我将通读你的图书馆。我将升级到VS2012以获得支持SAML2.0的.Net4.5。目前,当我尝试使用SignedXml类对我创建的SAML1.0断言(VS2010和.Net4.0)进行签名时,代码引发了一个错误。我认为这是因为ID属性名为“AssertionID”而不是“ID”。我可以完整地对文档进行签名,但不能仅对断言节点进行签名。@这是一个新问题,请不要将其作为注释发布,而是作为新问题发布。