Implemented it as follows:
sub guid2uname {
use MIME::Base64 qw(decode_base64);
sub enc_hex {
my @h = split(//,unpack('H*',decode_base64(shift)));
my ($i, $out, $first);
foreach $i(@h) {if (!$first){$out.="\\$i"; $first=1;} else
{$out.=$i;$first='';}}
return $out;
}
my $gu = enc_hex(shift);
my $aq = Net::LDAPS->new("ldaps://pharmacy.pharmacy.arizona.edu") or return
"FAIL LDAP ERROR $0";
my $rs=$aq->bind("$ldu\@pharmacy.arizona.edu", password=>$ldp) or return "FAIL
BIND ERROR ".$aq->error;
my $sb="DC=Pharmacy,DC=Pharmacy,DC=Arizona,DC=EDU";
my $fi = "(objectGUID=$gu)";
my $at = ['sAMAccountName'];
my $m=$aq->search(base=>$sb,filter=>$fi,attrs=>$at);
if ($m->count > 0){
my $un=$m->entry(0)->get_value('sAMAccountName');
return $un;
}
else {
return "No Username for GUID ".encode_base64($gu);
}
}
and it worked for every user account.
On Feb 19, 2021, at 2:23 PM, Bruce Johnson
<[email protected]<mailto:[email protected]>> wrote:
As a workaround I’m going to modify my original guid2uname method to use that
format for searching. (using the search filter in the format you suggest does
not return the expected LDAP records.)
--
Bruce Johnson
University of Arizona
College of Pharmacy
Information Technology Group
Institutions do not have opinions, merely customs