Menu

#14 AD Multidomain logins

open
nobody
None
5
2015-08-31
2011-10-18
Anonymous
No

Hi,
We have a single forest / multidomain AD setup and I wanted to allow users login from all the domains so I modified the code as follows: (Diff)
Commentif this is of any use....

--- ldap.inc.php-original 2011-10-13 15:11:12.000000000 +0100
+++ ldap.inc.php-multidomain 2011-10-18 14:49:24.000000000 +0100
@@ -38,6 +38,26 @@

function authenticate($login,$password) {
$result = false;
+

  • // parse login to see if includes domain.
  • //
  • if (preg_match("/@/",$login)) {
  • // Full domainName is user@domain format
  • $loginArray = split("@",$login);
  • $login = strtolower($loginArray[0]);
  • $domain = strtolower($loginArray[1]);
    +
  • $this->config['host'] = $this->config[$domain]['host'];
  • $this->config['domain'] = $this->config[$domain]['domain'];
  • $this->config['basedn'] = $this->config[$domain]['basedn'];
  • $this->config['userdn'] = $this->config[$domain]['userdn'];
  • $this->config['groupdn'] = $this->config[$domain]['groupdn'];
    +
  • }else {
  • // Use default domain entries
  • // do nothing
  • }
    +
    / just to be sure /
    $this->disconnect();
    if ($this->connect()) {
    @@ -57,23 +77,33 @@
    return $result;
    }

-
function userinfo($login) {
$result = array();
+

  • //
  • // Full domainName is user@domain format
  • //
  • if (preg_match("/@/",$login)) {
  • // Full domainName is user@domain format
  • $loginArray = split("@",$login);
  • $login = strtolower($loginArray[0]);
  • }
    +
    if ($this->connect() and $this->bind()) {

while in the config file I set up the following entries.....

$CONFIG['ldap']['host'] = 'defaultDomain.local';
$CONFIG['ldap']['domain'] = 'defaultDomain.local';
$CONFIG['ldap']['basedn'] = 'dc=XXX,dc=XXX,dc=local';
$CONFIG['ldap']['userdn'] = 'ou=XXX,dc=XX,dc=XXX,dc=local';
$CONFIG['ldap']['groupdn'] = 'ou=XXXX,dc=XX,dc=XXX,dc=local';

$CONFIG['ldap']['domain1.local']['host'] = 'xxxx.domain1.local';
$CONFIG['ldap']['domain1.local']['domain'] = 'domain1.local';
$CONFIG['ldap']['domain1.local']['basedn'] = 'dc=XX,dc=domain1,dc=local';
$CONFIG['ldap']['domain1.local']['userdn'] = 'dc=ie,dc=domain1,dc=local';
$CONFIG['ldap']['domain1.local']['groupdn'] = 'dc=ie,dc=domain1,dc=local';

$CONFIG['ldap']['domain2.local']['host'] = 'xxxx.domain1.local';
$CONFIG['ldap']['domain2.local']['domain'] = 'domain1.local';
$CONFIG['ldap']['domain2.local']['basedn'] = 'dc=domain1,dc=local';
$CONFIG['ldap']['domain2.local']['userdn'] = 'ou=Users,dc=domain2,dc=local';
$CONFIG['ldap']['domain2.local']['groupdn'] = 'ou=Groups.dc=domain2,dc=local';

etc....

Discussion

  • Anonymous

    Anonymous - 2015-08-28

    Hi,
    Really need the same implementation but I'm not able to have it working. Could you attach the 3 modified working files (removing private info)?
    Regards.

     
  • Anonymous

    Anonymous - 2015-08-31

    it would be nice to have it working for login in the form of DOMAINNAME\USERNAME

     

Anonymous
Anonymous

Add attachments
Cancel