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

本文关键字:SAML 协议 登录 请求 创建 方式 net 编程 | 更新日期: 2023-09-27 18:03:19

我实现了作为依赖方的Asp.net网站。目前它支持单点登录的WS-federation协议。它使用"WSFederationAuthenticationModule"类创建请求并将其发送给ADFS。它还使用"SecurityTokenHandler"类验证SAML响应,并断言用户的身份。

现在我必须支持SAML协议和WS-Fed协议。由于该网站是多租户网站,我不能仅仅依靠网络。配置并让框架负责请求和响应处理。我需要以编程方式生成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获得的响应将是相同的。

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

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

你看过https://github.com/i8beef/SAML2吗?我个人没有这方面的经验。

谢谢//Sam (@MrADFS)