我已经实施了作为依赖方的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>
我可以使用任何.net类/库来生成上述请求吗?或者我是否需要创建原始XML?如果没有,有没有免费的图书馆来完成这项工作?
由于我在验证SAML响应时支持SAML 1.1和SAML 2.0,我相信我不需要担心响应验证。我假设WS-Fed和SAML仅在向IDP发送请求时有所不同。无论协议如何,我将从IDP得到的回复都是一样的。
有人可以验证我的假设是否指向博客或示例代码?