什么是ADFS(Active Directory联合身份验证服务)?


77

因此,有人告诉我我们的PHP应用程序可能需要支持使用ADFS进行身份验证。

  1. 对于非Microsoft人员,ADFS是什么?

  2. 与LDAP之类的东西有什么不同?

  3. 它是如何工作的?向ADFS服务器发送的典型请求中将包含哪些信息?它设计用于身份验证和授权吗?

  4. 通常可以从Internet访问ADFS服务器(而不能通过公司AD域控制器访问)吗?

我曾尝试阅读一些Technet文档,但是充满微软语言,并没有太大帮助。

Wikipedia更好(请参见下文),但也许ServerFault社区中的某些人可以填补其中的空白。

Active Directory联合身份验证服务(ADFS)是由Microsoft开发的软件组件,可以安装在Windows Server操作系统上,以为用户提供跨组织边界的系统和应用程序的单点登录访问。它使用基于声明的访问控制授权模型来维护应用程序安全性并实现联合身份。

基于声明的身份验证是基于有关可信令牌中包含的其身份的一组声明对用户进行身份验证的过程。

在ADFS中,通过在两个安全领域之间建立信任关系来在两个组织之间建立身份联盟。一侧(帐户一侧)的联合服务器通过Active Directory域服务中的标准方法对用户进行身份验证,然后发出令牌,其中包含有关用户的一系列声明,包括其身份。另一方面,在资源方面,另一个联合服务器验证令牌并为本地服务器发出另一个令牌以接受声明的身份。这允许系统向属于另一个安全领域的用户提供对其资源或服务的受控访问,而无需用户直接向系统进行身份验证,并且两个系统无需共享用户身份或密码的数据库。

实际上,这种方法通常被用户认为如下:

  1. 用户登录到本地PC(早上开始工作时通常会这样做)
  2. 用户需要在合作伙伴公司的Extranet网站上获取信息-例如,获取价格或产品详细信息
  3. 用户导航到合作伙伴公司Extranet网站-例如:http : //example.com
  4. 合作伙伴网站现在不需要输入任何密码-而是使用AD FS将用户凭据传递到合作伙伴Extranet站点
  5. 用户现在已登录到合作伙伴网站,并且可以与“已登录”网站互动

来自https://en.wikipedia.org/wiki/Active_Directory_Federation_Services


我发现这些 文章该视频有助于提供概述。
西蒙·伊斯特

雷斯提供了一个很好的答案。我要添加的唯一其他信息是,可能需要了解ADFS实施的标准WS-Federation协议安全性声明标记语言(SAML)。以下是我发现对理解这些(相当复杂的)概念有用的视频。不幸的是,它们包含了太多的材料,因此我无法在此处包含。![视频缩略图 了解 YouTube上的SAML和单一登录101 ](youtube.com/watch?v=gUmMcecHN9s)[![视频缩略图](http
Simon East,

我在理解ADFS时也遇到了麻烦。我从一开始就需要一个解释(我不是AD人)。该视频包含在此处评论中提到的系列中,对我很有帮助。在这里,任何新的,零经验的ADFS使用者都应从这里开始,然后继续观看该系列中的其他视频。希望对您有所帮助。youtube.com/…–
毛里西奥·萨拉戈萨

1
抱歉,主持人删除了我的回答,并附上了有用的视频,并在上面发表了评论,但现在已被破坏。令人沮丧
西蒙东

Answers:


97

对于非Microsoft人员,ADFS是什么?

ADFS是Microsoft的单点登录和基于Web的身份验证的解决方案。

它主要用于提供一组凭据,可以访问不一定在同一域内托管的各种站点。

与LDAP之类的东西有什么不同?

LDAP:

  • 在端口389(或LDAPS的端口636)上使用TCP / UDP进行通信
  • 包含用于搜索/检索/添加/删除/修改用户,配置文件和其他目录条目的命令
  • 能够通过Web浏览器直接进行,但HTTP认证可以被翻译使用像Apache的到LDAP mod_authnz_ldap
  • 当用于第三方网站身份验证时,要求将用户名和密码提供给第三方,这对于安全性而言并不理想。
  • 它更像是一个开放标准,并具有许多Linux实现。

ADFS:

  • 通过标准HTTPS进行通信时,为Web设计的更好
  • 遵循与OAuth类似(但不完全)的安全过程,在该过程中,原始用户名/密码直接提供给组织的ADFS服务器(或代理,但不提供给第三方),如果有效,该过程将返回一个唯一的令牌,该令牌可以是用于访问第三方网站。
  • 尽管它确实使用了一些开放标准(HTTPS,SAML等),但是它是Microsoft特定的,并且需要仅在Windows Server上运行的Internet信息服务(IIS)。

另请参阅此答案

它是如何工作的?向ADFS服务器发送的典型请求中将包含哪些信息?它设计用于身份验证和授权吗?

它通过拥有一个托管ADFS / ADFS代理服务器的站点(站点A)来工作,该站点可以访问凭据(通常通过与Active Directory域控制器进行通信)。然后在需要通过ADFS进行身份验证的其他站点(站点B和C)之间获得信任。

当用户尝试在其浏览器中访问网站B时,该网站将用户重定向到ADFS代理网站(网站A),该网站要求其用户名和密码,对其进行身份验证,返回一组用于记住它们的cookie并对其进行重定向返回站点B,以及访问令牌。

如果用户随后尝试访问站点C,则他们还将从ADFS代理网站重定向到站点A以进行身份​​验证。如果存在正确的cookie,则不需要用户再次输入密码,而是立即使用令牌将其重定向回站点C。

出于授权目的,可以为用户配置ADFS的特定声明(或权限)。因此,它可以同时扮演两个角色。(请注意,身份验证和授权之间区别。)

有些人不希望使用它进行授权,而是将权限管理保留在第三方网站中。明显的缺点是站点A和B都需要跟踪用户帐户,而在ADFS处理这两个情况的情况下,仅ADFS需要知道用户。

通常可以从Internet访问ADFS服务器(而不能通过公司AD域控制器访问)吗?

是的,几乎总是这样。ADFS基于将主要用于网站身份验证的概念。并围绕IIS构建。

ADFS代理站点是通常可以从Internet访问的站点。但是,ADFS本身不是。通常,ADFS是与ADFS代理分开的服务器。

  • ADFS服务器
    服务器,该服务器链接到凭据,并具有声明配置和信任关系。通常不公开。

  • 托管IIS实例的ADFS代理服务器服务器,该实例具有需要身份验证的网站的登录页面。需要身份验证时,与ADFS通信。一般公开访问。

11
需要说明的是:ADFS代理服务器必须在IIS(Windows)上运行。但是,客户端网站(B&C)可以运行任何操作系统和Web服务器,包括Linux。
Olli

非常有帮助,刚刚创建了一个帐户来进行验证。
胡安

扩展@Reaces的答案,Windows Server 2016上的ADFS 4.0完全支持OAuth / OpenId Connect。
穆罕默德·雷扎·萨德雷迪尼

@MohammadRezaSadreddini随时编辑答案以扩大答案。
8:54收起
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.