Manage multi valued attributes in CAS authentication module (#2118)

This commit is contained in:
Clément OUDOT 2020-04-28 12:44:16 +02:00
parent a7e94b5a99
commit 9cd079e8fe
2 changed files with 21 additions and 13 deletions

View File

@ -6,7 +6,7 @@ use Lemonldap::NG::Common::FormEncode;
use XML::Simple;
use Lemonldap::NG::Common::UserAgent;
our $VERSION = '2.0.0';
our $VERSION = '2.0.8';
# PROPERTIES
@ -441,6 +441,9 @@ sub validateST {
{
foreach my $k ( keys %$casAttr ) {
my $v = $casAttr->{$k};
if ( ref($v) eq "ARRAY" ) {
$v = join( $self->conf->{multiValuesSeparator}, @$v );
}
utf8::encode($v);
$k =~ s/^cas://;
$attrs->{$k} = $v;

View File

@ -145,7 +145,9 @@ ok( $res = eval { JSON::from_json( $res->[2]->[0] ) }, ' GET JSON' )
or print STDERR $@;
ok( $res->{cn} eq 'Frédéric Accents', 'UTF-8 values' )
or explain( $res, 'cn => Frédéric Accents' );
count(3);
ok( ref( $res->{multi} ) eq "ARRAY" and $res->{multi}->[0] =~ /value/ )
or explain( $res->{multi}, 'Multi valued attribute' );
count(4);
# Logout initiated by SP
ok(
@ -216,16 +218,18 @@ done_testing( count() );
sub issuer {
return LLNG::Manager::Test->new( {
ini => {
logLevel => $debug,
domain => 'idp.com',
portal => 'http://auth.idp.com',
authentication => 'Demo',
userDB => 'Same',
issuerDBCASActivation => 1,
casAttr => 'uid',
casAttributes => { cn => 'cn', uid => 'uid', },
logLevel => $debug,
domain => 'idp.com',
portal => 'http://auth.idp.com',
authentication => 'Demo',
userDB => 'Same',
issuerDBCASActivation => 1,
casAttr => 'uid',
casAttributes => { cn => 'cn', uid => 'uid', multi => 'multi' },
casAccessControlPolicy => 'none',
multiValuesSeparator => ';',
macros =>
{ multi => '"value1;value2"', _whatToTrace => '$uid' },
}
}
);
@ -244,9 +248,10 @@ sub sp {
multiValuesSeparator => ';',
casSrvMetaDataExportedVars => {
idp => {
cn => 'cn',
mail => 'mail',
uid => 'uid',
cn => 'cn',
mail => 'mail',
uid => 'uid',
multi => 'multi',
}
},
casSrvMetaDataOptions => {