blob: e77ba05cb5cf51cb5d785215d026200231990277 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
package My::Suite::AuthGSSAPI;
@ISA = qw(My::Suite);
return "No AUTH_GSSAPI plugin" unless $ENV{AUTH_GSSAPI_SO};
return "Not run for embedded server" if $::opt_embedded_server;
# Following environment variables may need to be set
if ($^O eq "MSWin32")
{
chomp(my $whoami =`whoami /UPN 2>NUL` || `whoami`);
my $fullname = $whoami;
$fullname =~ s/\\/\\\\/; # SQL escaping for backslash
$ENV{'GSSAPI_FULLNAME'} = $fullname;
$ENV{'GSSAPI_SHORTNAME'} = $ENV{'USERNAME'};
chomp(my $sid = `powershell -Command "([System.Security.Principal.WindowsIdentity]::GetCurrent()).User.Value"`);
$ENV{'SID'} = $sid;
}
else
{
if (!$ENV{'GSSAPI_FULLNAME'})
{
my $s = `klist 2>/dev/null |grep 'Default principal: '`;
if ($s)
{
chomp($s);
my $fullname = substr($s,19);
$ENV{'GSSAPI_FULLNAME'} = $fullname;
}
}
$ENV{'GSSAPI_SHORTNAME'} = (split /@/, $ENV{'GSSAPI_FULLNAME'}) [0];
}
if (!$ENV{'GSSAPI_FULLNAME'} || !$ENV{'GSSAPI_SHORTNAME'})
{
return "Environment variable GSSAPI_SHORTNAME and GSSAPI_FULLNAME need to be set"
}
if ($::opt_verbose)
{
foreach $var ('GSSAPI_SHORTNAME','GSSAPI_FULLNAME','GSSAPI_KEYTAB_PATH','GSSAPI_PRINCIPAL_NAME')
{
print "$var=$ENV{$var}\n";
}
}
sub is_default { 1 }
bless { };
|