什么是 ADFS(Active Directory 联合服务)?

Sim*_*ast 94 active-directory adfs

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

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

  2. 它与 LDAP 之类的东西有何不同?

  3. 它是如何工作的?对 ADFS 服务器的典型请求中会包含哪些类型的信息?它是为身份验证和授权而设计的吗?

  4. ADFS 服务器通常是否可以从 Internet 访问(而企业 AD 域控制器则不能)?

我试过阅读一些 Technet 文档,但它充满了微软的说法,并没有太大帮助。

维基百科更好(见下文),但也许 ServerFault 社区的一些人可以填补一些空白。

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

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

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

在实践中,用户通常认为这种方法如下:

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

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

Rea*_*ces 114

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

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

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

它与 LDAP 之类的东西有何不同?

LDAP:

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

ADFS:

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

另请参阅有关该主题的此答案

它是如何工作的?对 ADFS 服务器的典型请求中会包含哪些类型的信息?它是为身份验证和授权而设计的吗?

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

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

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

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

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

ADFS 服务器通常是否可以从 Internet 访问(而企业 AD 域控制器则不能)?

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

ADFS 代理站点是通常可从 Internet 访问的站点。但是 ADFS 本​​身不是。ADFS 通常是独立于 ADFS 代理的服务器。

  • ADFS 服务器
    服务器链接到凭据,并具有声明配置以及信任。一般不能公开访问。
  • ADFS 代理服务器
    托管 IIS 实例的服务器,该实例具有需要身份验证的网站的登录页面。在需要身份验证时与 ADFS 通信。一般可公开访问。

  • 澄清:**ADFS 代理服务器** 必须在 IIS (Windows) 上运行。但是,客户端网站 (B & C) 可以运行任何操作系统和 Web 服务器,包括 Linux。 (12认同)