Add UserDB::CAS (#1183)

environments/ppa-mbqj77/deployments/1
Xavier Guimard 8 years ago
parent b83374b274
commit 22d921698a
  1. 1
      lemonldap-ng-portal/MANIFEST
  2. 2
      lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Auth/CAS.pm
  3. 53
      lemonldap-ng-portal/lib/Lemonldap/NG/Portal/UserDB/CAS.pm
  4. 11
      lemonldap-ng-portal/t/31-Auth-and-issuer-CAS.t

@ -103,6 +103,7 @@ lib/Lemonldap/NG/Portal/Register/Demo.pm
lib/Lemonldap/NG/Portal/Register/LDAP.pm
lib/Lemonldap/NG/Portal/Register/U2F.pm
lib/Lemonldap/NG/Portal/UserDB/AD.pm
lib/Lemonldap/NG/Portal/UserDB/CAS.pm
lib/Lemonldap/NG/Portal/UserDB/Choice.pm
lib/Lemonldap/NG/Portal/UserDB/Combination.pm
lib/Lemonldap/NG/Portal/UserDB/Custom.pm

@ -187,7 +187,7 @@ sub extractFormInfo {
# Ticket found, try to validate it
$local_url =~ s/ticket=[^&]+//;
$local_url =~ s/\?$//;
( $req->{user}, $req->datas->{casAttr} ) =
( $req->{user}, $req->datas->{casAttrs} ) =
$self->validateST( $req, $local_url, $ticket, $srvConf );
unless ( $req->{user} ) {
$self->userLogger->error("CAS: Unable to validate ST $ticket");

@ -0,0 +1,53 @@
package Lemonldap::NG::Portal::UserDB::CAS;
use strict;
use Mouse;
use Lemonldap::NG::Portal::Main::Constants qw(
PE_ERROR
PE_OK
);
our $VERSION = '2.0.0';
extends 'Lemonldap::NG::Common::Module';
# INITIALIZATION
sub init {
return 1;
}
# RUNNING METHODS
sub getUser {
my ( $self, $req ) = @_;
return PE_OK;
}
# Get all required attributes
sub setSessionInfo {
my ( $self, $req ) = @_;
my $srv;
unless ( $srv = $req->datas->{_casSrvCurrent} ) {
$self->logger->error('UserDB::CAS must be used with Auth::CAS');
return PE_ERROR;
}
my %ev = (
%{
$self->conf->{casSrvMetaDataOptions}->{$srv}
->{casSrvMetaDataOptionsExportedVars} || {}
},
%{ $self->conf->{exportedVars} }
);
foreach ( keys %ev ) {
$req->{sessionInfo}->{$_} = $req->datas->{casAttrs}->{$_};
}
PE_OK;
}
# Does nothing
sub setGroups {
PE_OK;
}
1;

@ -82,6 +82,15 @@ count(1);
expectOK($res);
expectAuthenticatedAs( $res, 'french' );
# Test attributes
ok( $res = $sp->_get("/sessions/global/$spId"), 'Get UTF-8' );
expectOK($res);
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);
# Logout initiated by SP
ok(
$res = $sp->_get(
@ -227,7 +236,7 @@ sub sp {
domain => 'sp.com',
portal => 'http://auth.sp.com',
authentication => 'CAS',
userDB => 'Null',
userDB => 'CAS',
restSessionServer => 1,
issuerDBCASActivation => 0,
multiValuesSeparator => ';',

Loading…
Cancel
Save