AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 708669
Accepted
Simon East
Simon East
Asked: 2015-07-27 19:04:22 +0800 CST2015-07-27 19:04:22 +0800 CST 2015-07-27 19:04:22 +0800 CST

什么是 ADFS(活动目录联合服务)?

  • 772

所以有人告诉我,我们的 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 将用户凭据传递到合作伙伴 Extranet 站点
  5. 用户现在已登录合作伙伴网站并可以与“已登录”的网站进行交互

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

active-directory
  • 1 1 个回答
  • 241153 Views

1 个回答

  • Voted
  1. Best Answer
    Reaces
    2015-07-27T23:26:34+08:002015-07-27T23:26:34+08:00

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

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

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

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

    LDAP:

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

    ADFS:

    • 更好地为 Web 设计,因为它通过标准 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 通信。一般可公开访问。
    • 114

相关问题

  • 如果以域用户身份远程登录,PC 速度极慢

  • 如何在 Windows 2003 的 ou 级别应用策略

  • 允许用户更改其 Active Directory 密码的 Web 界面

  • MOSS 2007 无法使用 ActiveDirectoryMembershipProvider 配置表单身份验证

  • 通过 VPN 更改 Active Directory 密码

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve