1

第三方软件通过 SAML 2.0 版提供 SSO 功能。

他们的文档提供了有关他们将在请求中发送哪些字段以及他们期望返回哪些字段以对特定用户进行身份验证的信息。这个概念实际上看起来非常简单,但我在使用 SAML 本身时遇到了麻烦。

到目前为止,我能够接收、解压缩和解析他们的 SAML 请求,但我不知道如何创建 SAML 以发送回他们。

我查看了 SamlAssertion 类,但由于我使用的是 .NET 3.5 版本,因此该类仅生成 SAML 1.1 版。

除此之外,我没有找到很多关于如何创建简单 SAML 响应的资源。

因此,问题是:如何使用 C# 创建简单的 SAML 2.0 响应?

任何帮助表示赞赏!

谢谢!

4

3 回答 3

3

由于 SAML 将 XmlDsig 用于消息级别的安全性,因此您可以根据规范手动创建令牌,然后只需使用 SignedXml 类对 Xml 进行签名。

另外,看看这个

http://www.componentspace.com/Products/SAMLv20.aspx

于 2013-04-03T20:16:33.960 回答
1

查看MSDN 上的示例SelfSTS 项目中的代码。

这篇博客文章详细介绍了它的工作原理。需要 .Net 4.0 和 WIF 运行时。

SelfSTS:当您现在需要 SAML 令牌时,马上

SelfSTS 是一个简单的 .EXE 文件,它不需要 IIS 并且从不涉及证书存储。无需安装,您只需要 .EXE 文件本身、其配置文件和要用于签署令牌的证书的 PFX 文件。它的唯一要求是 .NET 4.0、WIF 运行时和(如果您想生成额外的证书)Windows SDK。

SelfSTS 提供了一个简单的 UI,用于轻松编辑它将发出的声明的类型和值:元数据文档将相应地动态更新。

SelfSTS 提供了一个用于简化创建自签名 X.509 证书的 UI,如果您需要使用具有特定主题的签名证书,或者由于某种原因您不能使用开箱即用的证书,则可以使用该 UI。

编辑声明 编辑声明

于 2013-04-03T20:41:52.843 回答
1

看看在 C# .NET 4.5 中使用 SAML 2.0 的内容大致相同。

您可以使用 WIF SAML CTP,但这只是一个预览版,很久没有升级了。

否则,根据@Wiktor,使用商业堆栈之一。

我不知道 C# 中有任何开源 SAML 堆栈。

最接近的是 OpenSAML,它是用 C 编写的 IIRC。

于 2013-04-03T20:28:23.297 回答