Answered: After using QA-LDAP-Plugin, I get a redirect loop after logging in. How do I fix?

Post date: 2022-01-25 19:44:26
Views: 139

The other answer didn't work for me.  my problem was apparently different.
My company stores its LDAP dn as:

CN=Last, First,OU=Users,OU=Boston,DC=mycompany,DC=com

I want people to login with their unix login accounts, but that won't work because the unix login does not appear in the LDAP search string (where USERNAME would be replaced)

However you don't need the dn to bind.  You can ldap_bind with "mylogin@mycompany.com"  However in order to ldap_search, you need the real dn.

So here's my solution:

  1. Select Generic LDAP server
  2. Set the Generic LDAP search string to "USERNAME@mycompany.com" which will get us past the ldap_bind
  3. add some code to the bindToLDAP function in qa-plugin/qa-ldap-login/GenericLDAPServer.php that will find the dn from the samaccoutnname whic is needed for the ldap_search
  public function bindToLDAP($user,$pass) {
    $ldap_search_strings = explode('/', qa_opt('ldap_login_generic_search'));

    foreach ($ldap_search_strings as &$search_post) {
      // check whether the search string contains USERNAME
      if ( strpos($search_post, 'USERNAME') !== false ) {
        $this->dn = str_replace("USERNAME", $user, $search_post);
        // Check if it authenticates
        error_reporting(E_ALL^ E_WARNING);
        $bind = ldap_bind($this->con,$this->dn, $pass);
        error_reporting(E_ALL);

        //we have to preserve the username entered if auth was succesfull
        if($bind) {
          // get the real dn
          $filter = "(samaccountname=$user)";
          $dn = 'DC=mycompany,DC=com';
          $res = ldap_search($this->con, $dn, $filter, array());
          $first = ldap_first_entry($this->con, $res);
          $this->dn = ldap_get_dn($this->con, $first);
          // end get real dn
          $this->authenticatedUser = $user;
          return $bind;
        }
      }
    }
    return false;
  }
Please click Here to read the full story.
 
Other Top and Latest Questions:
Maduro overthrow in oil-rich Venezuela unlikely to shake energy markets in the near term
Week in review: We initiated a position — plus, top gainers and laggards of 2025
China’s BYD overtakes Tesla as world’s top EV seller for the first time
Chip stocks rally to start 2026 after third-straight winning year
Minneapolis Fed's Kashkari indicates interest rates don't need to be cut much more
Protest over AI, climate crisis leaves tens of thousands without power in Berlin
Ousted Venezuelan leader Maduro gets Julian Assange's lawyer to represent him in drug case
AI godfather says Meta’s new 29-year-old AI boss is ‘inexperienced’ and warns of staff exodus
Josh Brown: The bull market in this bank stock is ready to be renewed to start 2026
Minnesota Gov. Tim Walz announces he will not seek reelection