我仍然希望重定向失败的SSO请求或非SSO请求以使用表单,该如何处理?
请问是否有人可以描述一下整个流程呢?
谢谢!
ADFS支持两种身份验证协议。 1)WS-Federation协议 2)Web SSO SAML协议
*在WS-Federation场景中* 为了在您的应用程序和ADFS之间实现单点登录(建立信任关系)。
1) Install ADFS & WIF on one server , Create some users in AD.
2) Generate Federation Metadata.xml file in ADFS, save it one place for
future need.
3) Use Windows Azure Access Control Service(ACS) for
simplicity. (It will do all heavy lifting of your authentication
process of token coming from ADFS)
4) Generate Federation
Metadata.xml file in ACS and Import in your ADFS server as relying
party. (give some claims as well)
[http://blogs.msdn.com/b/card/archive/2010/06/25/using-federation-metadata-to-establish-a-relying-party-trust-in-ad-fs-2-0.aspx?Redirected=true][1]
5) Import federation metadata.xml
file from ADFS server to ACS and Add it as Identity provider. (add
claim processing rule)
6) Now in your web Application use WIF
FedUtil Tool and import ACS federation metadata.xml file.
就这样,你已经准备好了。
对于Web SSO SAML协议,您需要手动编写代码。
用例:
用户将访问您的应用程序。
用户未经身份验证,因此他将转到ACS,并将ACS重定向到ADFS登录页面。
用户输入凭据。 ADFS使用一些声明向ACS发出令牌。 ACS将 转换传入的ADFS声明并将其提供给您的应用程序。
您的应用程序现在已通过身份验证,因此您可以使用声明并执行授权操作。
您可以使用URL方案来检查此请求应该转到哪里:您的表单身份验证还是ADFS身份验证。 例如:http://somedomain.com/forms或http://somedomain.com/ADFS
所以你在使用 SAML 向第三方 STS 进行身份验证?
WIF(开箱即用)不支持 SAML。
虽然有一款名为 WIF SAML 扩展,但目前它只是 CTP(社区技术预览版)。
WIF 已经与你的 ASP.NET 应用程序集成。对于 .NET 4 及以下版本,需要单独下载。而对于 .NET 4.5,则已经集成了。
WIF 只是应用程序内部一组 .NET 类。
你可以使用一个名为 FedUtil 的工具将 WIF 与你的 ASP.NET 应用程序集成,该工具包括在 WIF SDK 下载中。(可在 VS 中通过“添加 STS”的方式调用)。
ADFS 安装会在服务器上安装 WIF,但这与你的应用程序是分离的。
流程如下:
.NET 应用程序 --> (WIF)--> (WS-Federation)--> ADFS --> (SAML)--> STS