openid: fix username-claim fallback

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
This commit is contained in:
Thomas Lamprecht 2021-11-25 07:57:10 +01:00
parent ebb14277f1
commit aa71c0f0f6

View File

@ -174,19 +174,19 @@ __PACKAGE__->register_method ({
my $subject = $info->{'sub'}; my $subject = $info->{'sub'};
my $unique_name; my $unique_name;
if (defined(my $user_attr = $config->{'username-claim'})) {
if (defined($info->{$user_attr})) { my $user_attr = $config->{'username-claim'} // 'sub';
$unique_name = $info->{$user_attr}; if (defined($info->{$user_attr})) {
} elsif ($user_attr eq 'subject') { # stay compat with old versions $unique_name = $info->{$user_attr};
$unique_name = $subject; } elsif ($user_attr eq 'subject') { # stay compat with old versions
} elsif ($user_attr eq 'username') { # stay compat with old versions $unique_name = $subject;
my $username = $info->{'preferred_username'}; } elsif ($user_attr eq 'username') { # stay compat with old versions
die "missing claim 'preferred_username'\n" if !defined($username); my $username = $info->{'preferred_username'};
$unique_name = $username; die "missing claim 'preferred_username'\n" if !defined($username);
} else { $unique_name = $username;
# neither the attr nor fallback are defined in info.. } else {
die "missing configured claim '$user_attr'\n"; # neither the attr nor fallback are defined in info..
} die "missing configured claim '$user_attr' in returned info object\n";
} }
my $username = "${unique_name}\@${realm}"; my $username = "${unique_name}\@${realm}";