I know this is an old post, but came across the thread when I was looking for something else and figured I'd post an answer anyway.
I managed to get this working by adding a new file TTXLdap.pm:
package TTXLdap;
$TTXDropdown::VERSION='1.00';
use strict;
use Win32::OLE;
my $strADsPath = 'LDAP://substitute-your-primary-AD-server-here';
my $strADsAlternatePath = 'LDAP://substitute-your-fallback-AD-server-here';
my $strDomain = "\@substitute-your-domain-name-here";
sub authenticate {
my $strUserID = shift || "";
my $strUserPassword = shift || "";
my $result = 0;
my $objNameSpace = Win32::OLE->GetObject ('LDAP:') or return $result;
my $objObjSec = $objNameSpace->OpenDSObject($strADsPath, $strUserID,$strUserPassword, 1);
if (Win32::OLE->LastError()==0) {
$result = 1;
}
else {
$objObjSec = $objNameSpace->OpenDSObject($strADsAlternatePath, $strUserID,$strUserPassword, 1);
if (Win32::OLE->LastError()==0) {
$result = 1;
}
}
if ($objObjSec ne undef) {
$objObjSec->Close;
}
$objNameSpace->Close;
return $result;
}
I then changed the login subroutine in TTXLogin.pm:
my $user = TTXUser->new($query->param('login'));
if ($user eq undef || TTXLdap::authenticate( $query->param('login'), $query->param('passwd')) ne 1) {
$data->{ERROR_MESSAGE} = '[%Wrong User ID or Password%]';
return undef;
}
While my Perl experience is limited, this has been working for us for a few months now. YMMV.