LDAP是唯一一种通过Active DirectoryvalidationWeb应用程序的方法吗?

如何将PHP Web应用程序连接到Active Directory? LDAP是唯一的方法吗?

我到目前为止的一些引用https://stackoverflow.com/questions/1003751/how-do-i-use-microsoft-ad-and-php-single-sign-on-web-app

那么,活动目录 LDAP + Kerberos +一些其他杂项零碎。 正式的,你可以通过Kerberos进行身份validation,但是这不会提供任何其他的授权数据。

只要您的防火墙不禁止它,并且您拥有具有正确权限的用户帐户,则应该能够使用标准LDAP PHP库,LDAP浏览器等来查询Active Directory。

LDAP不是必需的。 SAML可以使用基于声明的身份validation(新趋势)。 一个PHP库在这里 。

让您的networkingpipe理员安装ADFSv2,使AD在您的应用程序中打开SAML和端点WS-Trust。 ADFS是免费的,Windows 2008 R2是运行最新版本的正确操作系统。

提示:如果您需要像令牌重播检测这样的高级function,请确保安装它,以便使用SQL(而不是SQL Express)。

你也可以试试SAML。 尝试search“SAML活动目录”以及“SAML apache”。

即时通讯目前正在为我公司的混合应用程序,需要通过LDAP / ActiveDirectory的员工身份validation

在PHP中它不难对LDAP进行授权。

您的PHPconfiguration应该启用会话和ldap。

下面是使用PHP进行基本身份validation的示例

class LDAP_Authentication { private $connection; public function __construct($domain) { $this->connection = @ldap_connect($domain); } public connected() { return $this->connection !== false; } public function login($user,$password) { return @ldap_bind($this->connection,$user,$password); } } 

使用示例:

 session_start(); //Single Login $LDAPAuth = new LDAP_Authentication('domain.internal'); if($LDAPAuth->connected()) { if($LDAPAuth->login('some_user',"some_pass")) { $_SESSION['logged_in'] = true; $_SESSION['credentials'] = array('some_user','some_pass'); echo 'Welcome'; }else { echo 'Try again'; } } 

更新1

一种可能的方法是使用JavaScript来实现这一点,您可以通过使用WScript中的networking对象来检测客户端计算机名称,用户名,域,然后检测凭据,然后将它们发送到服务器以检查AD,如果全部那么服务器就会为该用户创build一个会话,然后用一个JSON对象进行回复,成功设置为true。

JavaScript端会看到它的成功,然后将浏览器redirect到另一个位置,导致他们login。

POC:

 var Data = {} //Show loading layer $("#loader").show(); try { var Information = new ActiveXObject("WScript.Network"); Data.Username = Information.UserName; Data.Computername = Information.ComputerName; Data.Domain = Information.UserDomain; $.post("/ldap/ajax/login",Data,fucntion(object){ if(object.success) { document.location = "/"; //Will automatically start session. }else { document.location = "/ldap/faild/"; //general login page } }); }catch(e) { document.location = "/ldap/faild/"; //general login page } 

是对的吗? 我怎样才能没有LDAP连接?

如果您的Linux系统正在运行Winbind( http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/winbind.html ),则可以设想使用标准PAM服务进行身份validation。 而且,正如已经指出的那样,您还可以使用Kerberos进行身份validation(将其视为密码数据库,或通过例如Apache的mod_kerberos真正接受Kerberos令牌)。

如果正确完成(因为用户密码不会遍历networking),使用Kerberos可以获得一些安全优势,但是您仍然需要与LDAP(或运行Winbind的本地系统)进行交互以获取组成员身份等信息以进行授权。