⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ldap.php

📁 Joomla!是一套获得过多个奖项的内容管理系统(Content Management System, CMS)。Joomla!采用PHP+MySQL数据库开发
💻 PHP
字号:
<?php/*** @version		$Id: ldap.php 10709 2008-08-21 09:58:52Z eddieajau $* @package		Joomla* @subpackage	JFramework* @copyright	Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.* @license		GNU/GPL, see LICENSE.php* Joomla! is free software. This version may have been modified pursuant* to the GNU General Public License, and as distributed it includes or* is derivative of works licensed under the GNU General Public License or* other free or open source software licenses.* See COPYRIGHT.php for copyright notices and details.*/// Check to ensure this file is included in Joomla!defined('_JEXEC') or die( 'Restricted access' );jimport( 'joomla.plugin.plugin' );/** * LDAP Authentication Plugin * * @package		Joomla * @subpackage	JFramework * @since 1.5 */class plgAuthenticationLdap extends JPlugin{	/**	 * Constructor	 *	 * For php4 compatability we must not use the __constructor as a constructor for plugins	 * because func_get_args ( void ) returns a copy of all passed arguments NOT references.	 * This causes problems with cross-referencing necessary for the observer design pattern.	 *	 * @param 	object $subject The object to observe	 * @param 	array  $config  An array that holds the plugin configuration	 * @since 1.5	 */	function plgAuthenticationLdap(& $subject, $config)	{		parent::__construct($subject, $config);	}	/**	 * This method should handle any authentication and report back to the subject	 *	 * @access	public	 * @param   array 	$credentials Array holding the user credentials	 * @param 	array   $options     Array of extra options	 * @param	object	$response	Authentication response object	 * @return	object	boolean	 * @since 1.5	 */	function onAuthenticate( $credentials, $options, &$response )	{		// Initialize variables		$userdetails = null;		$success = 0;		$userdetails = Array();		// For JLog		$response->type = 'LDAP';		// LDAP does not like Blank passwords (tries to Anon Bind which is bad)		if (empty($credentials['password']))		{			$response->status = JAUTHENTICATE_STATUS_FAILURE;			$response->error_message = 'LDAP can not have blank password';			return false;		}		// load plugin params info		$ldap_email 	= $this->params->get('ldap_email');		$ldap_fullname	= $this->params->get('ldap_fullname');		$ldap_uid		= $this->params->get('ldap_uid');		$auth_method	= $this->params->get('auth_method');		jimport('joomla.client.ldap');		$ldap = new JLDAP($this->params);		if (!$ldap->connect())		{			$response->status = JAUTHENTICATE_STATUS_FAILURE;			$response->error_message = 'Unable to connect to LDAP server';			return;		}		switch($auth_method)		{			case 'search':			{				// Bind using Connect Username/password				// Force anon bind to mitigate misconfiguration like [#7119]				if(strlen($this->params->get('username'))) $bindtest = $ldap->bind();				else $bindtest = $ldap->anonymous_bind();				if($bindtest)				{					// Search for users DN					$binddata = $ldap->simple_search(str_replace("[search]", $credentials['username'], $this->params->get('search_string')));					if(isset($binddata[0]) && isset($binddata[0]['dn'])) {						// Verify Users Credentials						$success = $ldap->bind($binddata[0]['dn'],$credentials['password'],1);						// Get users details						$userdetails = $binddata;					} else {						$response->status = JAUTHENTICATE_STATUS_FAILURE;						$response->error_message = 'Unable to find user';					}				}				else				{					$response->status = JAUTHENTICATE_STATUS_FAILURE;					$response->error_message = 'Unable to bind to LDAP';				}			}	break;			case 'bind':			{				// We just accept the result here				$success = $ldap->bind($credentials['username'],$credentials['password']);				if($success) {					$userdetails = $ldap->simple_search(str_replace("[search]", $credentials['username'], $this->params->get('search_string')));				} else {					$response->status = JAUTHENTICATE_STATUS_FAILURE;					$response->error_message = 'Failed binding to LDAP server';				}			}	break;		}		if(!$success)		{			$response->status = JAUTHENTICATE_STATUS_FAILURE;			if(!strlen($response->error_message)) $response->error_message = 'Incorrect username/password';		}		else		{			// Grab some details from LDAP and return them			if (isset($userdetails[0][$ldap_uid][0])) {				$response->username = $userdetails[0][$ldap_uid][0];			}			if (isset($userdetails[0][$ldap_email][0])) {				$response->email = $userdetails[0][$ldap_email][0];			}			if(isset($userdetails[0][$ldap_fullname][0])) {				$response->fullname = $userdetails[0][$ldap_fullname][0];			} else {				$response->fullname = $credentials['username'];			}			// Were good - So say so.			$response->status        = JAUTHENTICATE_STATUS_SUCCESS;			$response->error_message = '';		}		$ldap->close();	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -