如何在asp.net中实现SAML?

时间:2013-11-20 08:39:21

标签: saml-2.0

任何人都可以请您尝试澄清有关使用SAML进行单点登录的问题。

  • a)我们可以通过string rawSamlData = Request["SAMLResponse"];此代码获取身份提供者SAML响应吗?
  • b)SAML响应中的标记是什么?
  • c)我们如何在asp.net C#(vs2005)中接收令牌值?
  • d)我们可以强制身份提供者将用户值作为标记值发送吗?

提前致谢。

3 个答案:

答案 0 :(得分:6)

滚动自己的SAML确实可行,但这有点工作。我已经在.NET 4.5上完成了它,它支持验证断言,但我必须构建自己的saml协议处理。在VS2005上,你对框架的支持要少得多,但它仍然可行。

回答你的问题:

一个。是的,Request["SAMLResponse"]应该包含来自idp的saml响应。

B中。 SAMLResponse将包含带有SAML响应的BASE64编码的xml。

℃。 SAML <Response>消息包含<assertion>节点,该节点是用户的数据。您必须自己创建一个.NET标识。然后,您可以使用表单身份验证cookie机制来保持用户登录。

d。不明白这个问题。

如果您可以升级到更好地支持SAML并声称内置身份验证的.NET 4.5,那应该会好得多。但是我认为我在Kentor.AuthServices中完成的代码可以向后移植到.NET 3.5。

答案 1 :(得分:6)

我们编写了一个免费的开源模块,将SAML添加到ASP.NET应用程序中,我们专门针对.NET 4.0及更低版本(没有内置SAML,也没有内置的XML SHA256签名)支持)。 https://github.com/jitbit/AspNetSaml

您仍然可以在.NET 4.5及更高版本中使用它,以避免来自.NET库(如System.Deployment等)的不必要的依赖。它只是您可以放入项目中的一个简短的C#文件。

[免责声明]我是其中一位贡献者!

答案 2 :(得分:0)

听起来你正试图推出自己的SAML堆栈?

使用现有库会更容易 - 请参阅SAML : SAML connectivity / toolkit

这些提供了您需要的所有管道。

VS 2005可能会提供一些问题。至少,您需要ASP.NET 3.5。所有的身份工具都缺失了(FedUtil /身份和访问工具等)