ADFS,WIF,WS Federation,SAML和STS之间有什么区别?

时间:2011-11-02 11:02:39

标签: single-sign-on wif saml adfs ws-federation

这些是用于Microsoft服务单点登录的众多技术和流行语。

有人可以解释ADFS,WIF,WS联盟,SAML和STS(安全令牌服务),包括每个地方的使用地点和时间。

3 个答案:

答案 0 :(得分:106)

  • ADFS(Active Directory联合身份验证服务) - 由Microsoft生成并基于Windows Identity Foundation(WIF)构建的现成安全令牌服务(STS)。依赖AD进行身份验证。可用于活动(SOAP Web服务)或被动(Web站点)方案,并支持SAML令牌,WS-Federation,WS-Trust和SAML-Protocol。它可以用作身份提供者(针对AD)或作为联合提供者。

    http://technet.microsoft.com/en-us/library/adfs2(v=ws.10).aspx

  • WIF(Windows Identity Foundation) - 用于在.NET应用程序和依赖方中驱动基于声明的身份验证的.NET库。它还可以用作WS-Trust客户端和构建自定义STS。

    http://msdn.microsoft.com/en-us/security/aa570351

  • WS-Federation - 依赖方和STS用于协商安全令牌的协议。应用程序使用WS Federation从STS请求安全令牌,并且STS使用WS Federation协议将(大部分时间)SAML安全令牌返回给应用程序。这通常是通过HTTP(GET和POST以及重定向)。与WS-Trust相比,后者完全基于Web服务。

    http://msdn.microsoft.com/en-us/library/bb498017.aspx

  • SAML令牌(安全断言标记语言) - 这只是用于安全令牌的XML格式,通常捕获用户信息(声明)和其他相关的安全相关数据(签名,令牌发布者等)。应用程序使用该令牌来验证用户并驱动应用程序行为(例如授权)。 SAML安全令牌已签名以保证完整性并可选择加密,因此只有RP和STS才能看到其内容。在使用WIF的ASP.NET网站中,默认情况下,令牌被加密并分块为cookie,但这可以更改。

    http://en.wikipedia.org/wiki/Security_Assertion_Markup_Language

  • STS(安全令牌服务) - 如上所述,STS是位于依赖方应用程序和用户之间的代理。 STS是安全令牌的发行者。 “发行人”通常是STS的同义词。 STS配置为两个角色:在对用户进行身份验证时作为 身份提供商 (IdP)或作为 联盟提供商 ( FP)当他们坐在信任链的中间并充当其他IdP的“依赖方”时。 IdP需要一种验证用户的方法。一些(如ADFS)使用Active Directory,其他使用自定义数据库,如SQL Server Membership(不是ADFS)。如果用户正确进行身份验证,STS将发出安全令牌。

    http://msdn.microsoft.com/en-us/library/ff650503.aspx

    http://docs.oasis-open.org/ws-sx/ws-trust/v1.4/os/ws-trust-1.4-spec-os.html#_Toc212615442

希望这会有所帮助。在基于声明的身份验证中有许多概念和部分需要理解。要获得完整的理解,您应该查看A Guide to Claims-Based Identity and Access Control

答案 1 :(得分:62)

从全局角度来看:

假设需要身份验证和授权的基于ASP.NET浏览器的应用程序。

应用程序可以自行滚动,也可以外包。

WIF 是一个允许ASP.NET实现此外包的.NET库。

它与 STS ADFS 是STS的一个实例)进行对话,该实例针对身份存储库进行身份验证,并以声明的形式提供授权信息。 STS提供一组签名的可信索赔。

WIF和ADFS之间使用的协议是 WS-Federation

如果STS是基于Java的(例如Ping Identity或OpenAM),则WIF将使用 SAML 协议进行通信。 ADFS还支持SAML以启用联合。

(联盟例如允许面向Java的公司A中的用户通过针对A的身份库进行身份验证来访问面向.NET的公司B中的ASP.NET应用程序。公司A和公司B在联邦意义上相互信任。)

答案 2 :(得分:4)

本文旨在澄清ADFS 2.0和SAML协议支持的SAML令牌,直到ADFS 3.0(Windows Server 2012 R2中的ADFS版本)才支持该备份

1)ADFS 3.0之前不支持SAML协议

2)基于.net 4.5的WIF应用需要使用WS-Fed协议,目前不支持SAML协议

3)SAML令牌是基于XML的。 ADFS 2.0和以前的版本支持SAML令牌。 ADFS 1.0。 1.1。和2.0仅支持SAML令牌,而不支持协议

4)如果您使用WIF,则需要WS-Fed(协议) - 因此您可以执行以下操作:

SAML协议< ---> ADFS< ----> WS-FED< ----> WIF(.net 4.5)

来自维基:

•ADFS 1.0 - Windows Server 2003 R2(附加下载)

•ADFS 1.1 - Windows Server 2008和Windows Server 2008 R2。

•ADFS 2.0 - Windows Server 2008和Windows Server 2008 R2(下载 来自Microsoft.com)

•ADFS 2.1 - Windows Server 2012。

•ADFS 3.0 - Windows Server 2012 R2。