所以有人告诉我,我们的 PHP 应用程序可能需要支持使用 ADFS 的身份验证。
对于非 Microsoft 人员,什么是 ADFS?
它与 LDAP 之类的东西有何不同?
它是如何工作的?对 ADFS 服务器的典型请求中将包含哪些类型的信息?它是为身份验证和授权而设计的吗?
ADFS 服务器是否通常可以从 Internet 访问(而企业 AD 域控制器则不能)?
我试过阅读一些 Technet 文档,但里面全是微软的说法,没有太大帮助。
维基百科更好(见下文),但也许一些 ServerFault 社区可以填补一些空白。
Active Directory 联合服务 (ADFS)是由 Microsoft 开发的软件组件,可以安装在 Windows Server 操作系统上,为用户提供对跨组织边界的系统和应用程序的单点登录访问。它使用基于声明的访问控制授权模型来维护应用程序安全性并实施联合身份。
基于声明的身份验证是基于一组包含在受信任令牌中的关于用户身份的声明来验证用户的过程。
在 ADFS 中,通过在两个安全领域之间建立信任,在两个组织之间建立身份联合。一侧(帐户端)的联合服务器通过 Active Directory 域服务中的标准方式对用户进行身份验证,然后发出一个令牌,其中包含有关用户的一系列声明,包括其身份。另一方面,在资源端,另一个联合服务器验证令牌并为本地服务器颁发另一个令牌以接受声明的身份。这允许系统向属于另一个安全领域的用户提供对其资源或服务的受控访问,而无需用户直接向系统进行身份验证,也无需两个系统共享用户身份或密码的数据库。
在实践中,用户通常认为这种方法如下:
- 用户登录到他们的本地 PC(就像他们通常在早上开始工作时那样)
- 用户需要在合作伙伴公司的外联网网站上获取信息——例如获取定价或产品详细信息
- 用户导航到合作伙伴公司外联网站点 - 例如:http ://example.com
- 合作伙伴网站现在不需要输入任何密码 - 而是使用 AD FS 将用户凭据传递到合作伙伴 Extranet 站点
- 用户现在已登录合作伙伴网站并可以与“已登录”的网站进行交互
来自https://en.wikipedia.org/wiki/Active_Directory_Federation_Services
ADFS 是 Microsoft 的单点登录和基于 Web 的身份验证的解决方案。
它主要用于提供一组凭据,这些凭据可以访问不一定托管在同一域中的各种站点。
LDAP:
mod_authnz_ldap
。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 基于它将主要用于网站身份验证的概念。并且是围绕 IIS 构建的。
ADFS 代理站点是通常可从 Internet 访问的站点。但是 ADFS 本身不是。ADFS 通常是独立于 ADFS 代理的服务器。
链接到凭据的服务器,并具有声明配置和信任。一般不对外公开。
服务器托管 IIS 实例,该实例具有需要身份验证的网站的登录页面。需要身份验证时与 ADFS 通信。一般可公开访问。