所以我被告知我们的PHP应用程序可能需要支持使用ADFS的身份validation。
对于一个非微软的人来说,什么是ADFS?
它与LDAP之类的东西有什么不同?
它是如何工作的? 在ADFS服务器的典型请求中将包含哪些types的信息? 它是否为authentication和授权而devise?
ADFS服务器通常可以从互联网访问(而公司AD域控制器不会)?
我已经尝试阅读一些Technet文档,但它充满了微软,说这不是很有帮助。
维基百科更好(见下文),但也许一些ServerFault社区可以填补一些空白。
Active Directory联合身份validation服务(ADFS)是由Microsoft开发的一种软件组件,可安装在Windows Server操作系统上,为用户提供跨组织边界的系统和应用程序的单一login访问。 它使用基于声明的访问控制授权模型来维护应用程序安全性并实施联合身份。
基于声明的身份validation是基于关于包含在受信任的令牌中的身份的一组声明来对用户进行身份validation的过程。
在ADFS中,通过build立两个安全领域之间的信任,在两个组织之间build立联合身份。 一侧的联合服务器(帐户侧)通过Active Directory域服务中的标准方法对用户进行身份validation,然后发出包含一系列关于用户的声明(包括其身份)的令牌。 另一方面,资源方面,另一个联邦服务器validation令牌,并为本地服务器发出另一个令牌来接受声明的身份。 这允许系统向属于另一安全领域的用户提供对其资源或服务的受控访问,而不要求用户直接向系统authentication,也不需要两个系统共享用户身份或密码的数据库。
在实践中,这种方法通常被用户认为如下:
- 用户login到他们的本地PC(正如他们通常在早上开始工作时那样)
- 用户需要获取合作伙伴公司的外联网网站上的信息,例如获取定价或产品详细信息
- 用户导航到合作伙伴公司的外部网站 – 例如: http : //example.com
- 合作伙伴网站现在不需要键入任何密码,而是使用AD FS将用户凭据传递给合作伙伴Extranet站点
- 用户现在login到合作伙伴网站,并可以与网站“login”
从https://en.wikipedia.org/wiki/Active_Directory_Federation_Services
对于一个非微软的人来说,什么是ADFS?
ADFS是微软针对单一login和基于Web的身份validation的解决scheme。
它主要用于提供一组凭据,可以访问不一定托pipe在同一个域中的各种网站。
它与LDAP之类的东西有什么不同?
LDAP:
mod_authnz_ldap
类的东西,可以将HTTPauthentication转换为LDAP。 ADFS:
另请参阅这个问题的答案 。
它是如何工作的? ADFS服务器的典型请求中将包含哪些types的信息? 它是否为authentication和授权而devise?
它通过拥有一个承载ADFS / ADFS代理服务器的单个站点(站点A)来工作,该服务器可以访问凭据(通常通过与Active Directory域控制器进行通信)。 然后在需要通过ADFS进行身份validation的其他站点(站点B和C)之间获得信任。
当用户尝试在浏览器中访问站点B时,站点将用户redirect到ADFS代理网站(站点A),该网站要求input用户名和密码,对其进行身份validation,返回一组用于记忆它们的cookie,然后redirect回到站点B,以及访问令牌。
如果用户然后尝试访问站点C,他们也将被redirect到站点A从ADFS代理网站进行身份validation。 如果存在正确的cookie,则用户不需要再次input密码,而是立即通过令牌redirect回站点C.
为了授权目的,ADFS可以为用户configuration特定的声明(或权限)。 所以它可以担任这两个angular色。 (请注意authentication与授权的区别 。)
有些人不喜欢使用它进行授权,而是将权限pipe理保留在第三方网站上。 显而易见的缺点是,站点A和站点B都需要跟踪用户帐户,而在ADFS同时处理的情况下,只有ADFS需要知道用户。
ADFS服务器通常可以从互联网访问(而公司AD域控制器不会)?
是的,几乎总是。 ADFS基于它将主要用于网站身份validation的概念。 并build立在IIS周围。
ADFS代理网站是通常可以从互联网上访问的网站。 但是ADFS本身不是。 ADFS通常是独立于ADFS代理的服务器。