使用.net库以编程方式创建SAML协议登录请求

时间:2016-08-19 14:32:46

标签: c# asp.net saml pingfederate

我已经实施了作为依赖方的Asp.net网站。目前,它支持SSO的WS-federation协议。它使用“WSFederationAuthenticationModule”类创建请求并将其发送到ADFS。它还使用“SecurityTokenHandler”类验证SAML响应并声明用户的身份。

现在我必须支持SAML协议以及WS-Fed协议。由于该站点是多租户站点,因此我不能仅仅依赖于web.confing配置,而是让框架处理请求和响应处理。我需要以编程方式生成SAML请求。

以下是我的问题:

似乎我需要创建“SAMLRequest”,它类似于:

<samlp:AuthnRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" ID="_7171b0b2-19f2-4ba2-8f94-24b5e56b7f1e" IssueInstant="2014-01-30T16:18:35Z" Version="2.0" AssertionConsumerServiceIndex="0" >
  <saml:Issuer>urn:federation:MicrosoftOnline</saml:Issuer>
  <samlp:NameIDPolicy Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent"/>
</samlp:AuthnRequest>
  1. 我可以使用任何.net类/库来生成上述请求吗?或者我是否需要创建原始XML?如果没有,有没有免费的图书馆来完成这项工作?

  2. 由于我在验证SAML响应时支持SAML 1.1和SAML 2.0,我相信我不需要担心响应验证。我假设WS-Fed和SAML仅在向IDP发送请求时有所不同。无论协议如何,我将从IDP得到的回复都是一样的。

  3. 有人可以验证我的假设是否指向博客或示例代码?

1 个答案:

答案 0 :(得分:1)

你看过https://github.com/i8beef/SAML2了吗?我认为没有个人经验。

谢谢// Sam(@MrADFS)