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 
<john...@pharmacy.arizona.edu<mailto:john...@pharmacy.arizona.edu>> 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

Reply via email to