tidy with new conf
This commit is contained in:
parent
2532970b33
commit
c7b4eb5051
|
@ -8,7 +8,7 @@
|
|||
--nobreak-before-all-operators
|
||||
--blanks-before-comments
|
||||
--nocuddled-else
|
||||
--maximum-line-length=79
|
||||
--maximum-line-length=80
|
||||
--paren-tightness=1
|
||||
--square-bracket-tightness=1
|
||||
--space-for-semicolon
|
||||
|
|
|
@ -9,9 +9,7 @@ our $VERSION = '2.0.0';
|
|||
has confAccess => (
|
||||
is => 'rw',
|
||||
builder => sub {
|
||||
my $res = Lemonldap::NG::Common::Conf->new(
|
||||
{
|
||||
(
|
||||
my $res = Lemonldap::NG::Common::Conf->new( { (
|
||||
ref $_[0] && $_[0]->{iniFile}
|
||||
? ( confFile => $_[0]->{iniFile} )
|
||||
: ()
|
||||
|
|
|
@ -13,8 +13,7 @@ has app => ( is => 'ro', isa => 'CodeRef' );
|
|||
sub _get {
|
||||
my ( $self, $path, $query ) = @_;
|
||||
$query //= '';
|
||||
return $self->app->(
|
||||
{
|
||||
return $self->app->( {
|
||||
'HTTP_ACCEPT' => 'application/json, text/plain, */*',
|
||||
'SCRIPT_NAME' => '',
|
||||
'HTTP_ACCEPT_ENCODING' => 'gzip, deflate',
|
||||
|
@ -39,8 +38,7 @@ sub _post {
|
|||
my ( $self, $path, $query, $body, $type, $len ) = @_;
|
||||
die "$body must be a IO::Handle"
|
||||
unless ( ref($body) and $body->can('read') );
|
||||
return $self->app->(
|
||||
{
|
||||
return $self->app->( {
|
||||
'HTTP_ACCEPT' => 'application/json, text/plain, */*',
|
||||
'SCRIPT_NAME' => '',
|
||||
'HTTP_ACCEPT_ENCODING' => 'gzip, deflate',
|
||||
|
@ -69,8 +67,7 @@ sub _put {
|
|||
my ( $self, $path, $query, $body, $type, $len ) = @_;
|
||||
die "$body must be a IO::Handle"
|
||||
unless ( ref($body) and $body->can('read') );
|
||||
return $self->app->(
|
||||
{
|
||||
return $self->app->( {
|
||||
'HTTP_ACCEPT' => 'application/json, text/plain, */*',
|
||||
'SCRIPT_NAME' => '',
|
||||
'HTTP_ACCEPT_ENCODING' => 'gzip, deflate',
|
||||
|
@ -97,8 +94,7 @@ sub _put {
|
|||
|
||||
sub _del {
|
||||
my ( $self, $path, $query ) = @_;
|
||||
return $self->app->(
|
||||
{
|
||||
return $self->app->( {
|
||||
'HTTP_ACCEPT' => 'application/json, text/plain, */*',
|
||||
'SCRIPT_NAME' => '',
|
||||
'HTTP_ACCEPT_ENCODING' => 'gzip, deflate',
|
||||
|
|
|
@ -239,8 +239,7 @@ sub session {
|
|||
|
||||
sub getApacheSession {
|
||||
my ( $self, $mod, $id, $info, $force ) = @_;
|
||||
my $apacheSession = Lemonldap::NG::Common::Session->new(
|
||||
{
|
||||
my $apacheSession = Lemonldap::NG::Common::Session->new( {
|
||||
storageModule => $mod->{module},
|
||||
storageModuleOptions => $mod->{options},
|
||||
cacheModule =>
|
||||
|
|
|
@ -17,8 +17,7 @@ my $h;
|
|||
my $inifile = "lemonldap-ng.ini";
|
||||
my $confsection = "configuration";
|
||||
|
||||
ok(
|
||||
(
|
||||
ok( (
|
||||
Lemonldap::NG::Common::Conf->new( type => 'bad' ) == 0
|
||||
and $Lemonldap::NG::Common::Conf::msg =~
|
||||
/Error: Unknown package Lemonldap::NG::Common::Conf::Backends::bad\.$/
|
||||
|
@ -28,8 +27,7 @@ ok(
|
|||
|
||||
$h = bless {}, 'Lemonldap::NG::Common::Conf';
|
||||
|
||||
ok(
|
||||
(
|
||||
ok( (
|
||||
%$h = ( %$h, %{ $h->getLocalConf( $confsection, $inifile, 0 ) } )
|
||||
and exists $h->{localStorage}
|
||||
),
|
||||
|
|
|
@ -17,8 +17,7 @@ BEGIN { use_ok('Lemonldap::NG::Common::Conf') }
|
|||
my $h;
|
||||
|
||||
ok(
|
||||
$h = new Lemonldap::NG::Common::Conf(
|
||||
{
|
||||
$h = new Lemonldap::NG::Common::Conf( {
|
||||
type => 'File',
|
||||
dirName => "t/",
|
||||
}
|
||||
|
|
|
@ -27,8 +27,7 @@ SKIP: {
|
|||
my $skipSQLite = 0;
|
||||
|
||||
ok(
|
||||
$h = new Lemonldap::NG::Common::Conf(
|
||||
{
|
||||
$h = new Lemonldap::NG::Common::Conf( {
|
||||
type => 'CDBI',
|
||||
dbiChain => "DBI:SQLite:dbname=t/lmConf.sql",
|
||||
dbiUser => '',
|
||||
|
|
|
@ -27,8 +27,7 @@ SKIP: {
|
|||
my $skipSQLite = 0;
|
||||
|
||||
ok(
|
||||
$h = new Lemonldap::NG::Common::Conf(
|
||||
{
|
||||
$h = new Lemonldap::NG::Common::Conf( {
|
||||
type => 'RDBI',
|
||||
dbiChain => "DBI:SQLite:dbname=t/lmConf.sql",
|
||||
dbiUser => '',
|
||||
|
|
|
@ -18,8 +18,7 @@ SKIP: {
|
|||
use_ok('Lemonldap::NG::Common::Conf');
|
||||
my $h;
|
||||
ok(
|
||||
$h = new Lemonldap::NG::Common::Conf(
|
||||
{
|
||||
$h = new Lemonldap::NG::Common::Conf( {
|
||||
type => 'LDAP',
|
||||
ldapServer => 'ldap://localhost',
|
||||
ldapConfBase => 'ou=conf,ou=websso,dc=example,dc=com',
|
||||
|
|
|
@ -23,8 +23,7 @@ my $sessionOptions = {
|
|||
LockDirectory => $dir,
|
||||
};
|
||||
|
||||
my $session = Lemonldap::NG::Common::Session->new(
|
||||
{
|
||||
my $session = Lemonldap::NG::Common::Session->new( {
|
||||
storageModule => $sessionModule,
|
||||
storageModuleOptions => $sessionOptions,
|
||||
kind => "TEST",
|
||||
|
@ -43,8 +42,7 @@ use_ok('Lemonldap::NG::Common::Apache::Session::Generate::SHA256');
|
|||
$sessionOptions->{generateModule} =
|
||||
"Lemonldap::NG::Common::Apache::Session::Generate::SHA256";
|
||||
|
||||
my $session2 = Lemonldap::NG::Common::Session->new(
|
||||
{
|
||||
my $session2 = Lemonldap::NG::Common::Session->new( {
|
||||
storageModule => $sessionModule,
|
||||
storageModuleOptions => $sessionOptions,
|
||||
kind => "TEST",
|
||||
|
|
|
@ -161,8 +161,7 @@ our $_ua;
|
|||
sub ua {
|
||||
my ($class) = @_;
|
||||
return $_ua if ($_ua);
|
||||
$_ua = Lemonldap::NG::Common::UserAgent->new(
|
||||
{
|
||||
$_ua = Lemonldap::NG::Common::UserAgent->new( {
|
||||
lwpOpts => $class->localConfig->{lwpOpts},
|
||||
lwpSslOpts => $class->localConfig->{lwpSslOpts}
|
||||
}
|
||||
|
|
|
@ -59,8 +59,7 @@ sub getCDAInfos {
|
|||
my $infos = {};
|
||||
|
||||
# Get the session
|
||||
my $cdaSession = Lemonldap::NG::Common::Session->new(
|
||||
{
|
||||
my $cdaSession = Lemonldap::NG::Common::Session->new( {
|
||||
storageModule => $class->tsv->{sessionStorageModule},
|
||||
storageModuleOptions => $class->tsv->{sessionStorageOptions},
|
||||
cacheModule => $class->tsv->{sessionCacheModule},
|
||||
|
|
|
@ -37,8 +37,7 @@ sub loadVhostConfig {
|
|||
my $json;
|
||||
if ( $class->tsv->{useSafeJail} ) {
|
||||
my $rUrl = $req->{env}->{RULES_URL}
|
||||
|| (
|
||||
(
|
||||
|| ( (
|
||||
$class->localConfig->{loopBackUrl}
|
||||
|| "http://127.0.0.1:" . $req->{env}->{SERVER_PORT}
|
||||
)
|
||||
|
|
|
@ -178,8 +178,7 @@ sub configReload {
|
|||
sub jailInit {
|
||||
my ( $class, $conf ) = @_;
|
||||
|
||||
$class->tsv->{jail} = Lemonldap::NG::Handler::Main::Jail->new(
|
||||
{
|
||||
$class->tsv->{jail} = Lemonldap::NG::Handler::Main::Jail->new( {
|
||||
useSafeJail => $conf->{useSafeJail},
|
||||
customFunctions => $conf->{customFunctions},
|
||||
}
|
||||
|
@ -193,8 +192,7 @@ sub jailInit {
|
|||
sub defaultValuesInit {
|
||||
my ( $class, $conf ) = @_;
|
||||
|
||||
$class->tsv->{$_} = $conf->{$_} foreach (
|
||||
qw(
|
||||
$class->tsv->{$_} = $conf->{$_} foreach ( qw(
|
||||
cookieExpiration cookieName customFunctions httpOnly
|
||||
securedCookie timeout timeoutActivity
|
||||
timeoutActivityInterval useRedirectOnError useRedirectOnForbidden
|
||||
|
|
|
@ -446,8 +446,7 @@ sub retrieveSession {
|
|||
|
||||
# 2. Get the session from cache or backend
|
||||
my $session = $req->data->{session} = (
|
||||
Lemonldap::NG::Common::Session->new(
|
||||
{
|
||||
Lemonldap::NG::Common::Session->new( {
|
||||
storageModule => $class->tsv->{sessionStorageModule},
|
||||
storageModuleOptions => $class->tsv->{sessionStorageOptions},
|
||||
cacheModule => $class->tsv->{sessionCacheModule},
|
||||
|
|
|
@ -30,8 +30,7 @@ eval { Lemonldap::NG::Handler::Main->logLevelInit('error') };
|
|||
ok( !$@, 'logLevelInit' );
|
||||
|
||||
ok(
|
||||
Lemonldap::NG::Handler::Main->jailInit(
|
||||
{
|
||||
Lemonldap::NG::Handler::Main->jailInit( {
|
||||
https => 0,
|
||||
port => 0,
|
||||
maintenance => 0,
|
||||
|
@ -51,8 +50,7 @@ ok(
|
|||
);
|
||||
|
||||
ok(
|
||||
Lemonldap::NG::Handler::Main->defaultValuesInit(
|
||||
{
|
||||
Lemonldap::NG::Handler::Main->defaultValuesInit( {
|
||||
https => 0,
|
||||
port => 0,
|
||||
maintenance => 0,
|
||||
|
@ -72,8 +70,7 @@ ok(
|
|||
);
|
||||
|
||||
ok(
|
||||
Lemonldap::NG::Handler::Main->locationRulesInit(
|
||||
{
|
||||
Lemonldap::NG::Handler::Main->locationRulesInit( {
|
||||
'locationRules' => {
|
||||
'www1' => {
|
||||
'default' => 'accept',
|
||||
|
|
|
@ -13,8 +13,7 @@ ok( $app = module( Lemonldap::NG::Handler::PSGI::Try->new() ), 'New object' );
|
|||
init();
|
||||
|
||||
ok(
|
||||
$app->init(
|
||||
{
|
||||
$app->init( {
|
||||
configStorage => { type => 'File', dirName => 't' },
|
||||
localSessionStorage => '',
|
||||
logLevel => 'warn',
|
||||
|
|
|
@ -105,8 +105,7 @@ sub _get {
|
|||
my ( $self, $path, $query, $host, $cookie, %custom ) = @_;
|
||||
$query //= '';
|
||||
$host ||= 'test1.example.com';
|
||||
return $self->app->(
|
||||
{
|
||||
return $self->app->( {
|
||||
'HTTP_ACCEPT' => 'text/html',
|
||||
'SCRIPT_NAME' => 'lmAuth',
|
||||
'SERVER_NAME' => '127.0.0.1',
|
||||
|
|
|
@ -274,9 +274,7 @@ sub attributes {
|
|||
'authChoiceModules' => {
|
||||
'keyMsgFail' => '__badChoiceKey__',
|
||||
'keyTest' => qr/^(\d*)?[a-zA-Z0-9_]+$/,
|
||||
'select' => [
|
||||
[
|
||||
{
|
||||
'select' => [ [ {
|
||||
'k' => 'Apache',
|
||||
'v' => 'Apache'
|
||||
},
|
||||
|
@ -373,8 +371,7 @@ sub attributes {
|
|||
'v' => 'customModule'
|
||||
}
|
||||
],
|
||||
[
|
||||
{
|
||||
[ {
|
||||
'k' => 'AD',
|
||||
'v' => 'Active Directory'
|
||||
},
|
||||
|
@ -439,8 +436,7 @@ sub attributes {
|
|||
'v' => 'customModule'
|
||||
}
|
||||
],
|
||||
[
|
||||
{
|
||||
[ {
|
||||
'k' => 'AD',
|
||||
'v' => 'Active Directory'
|
||||
},
|
||||
|
@ -481,8 +477,7 @@ sub attributes {
|
|||
},
|
||||
'authentication' => {
|
||||
'default' => 'Demo',
|
||||
'select' => [
|
||||
{
|
||||
'select' => [ {
|
||||
'k' => 'Apache',
|
||||
'v' => 'Apache'
|
||||
},
|
||||
|
@ -637,8 +632,7 @@ sub attributes {
|
|||
},
|
||||
'casAccessControlPolicy' => {
|
||||
'default' => 'none',
|
||||
'select' => [
|
||||
{
|
||||
'select' => [ {
|
||||
'k' => 'none',
|
||||
'v' => 'None'
|
||||
},
|
||||
|
@ -782,8 +776,7 @@ qr/(?:(?:https?):\/\/(?:(?:(?:(?:(?:(?:[a-zA-Z0-9][-a-zA-Z0-9]*)?[a-zA-Z0-9])[.]
|
|||
},
|
||||
'combModules' => {
|
||||
'keyTest' => qr/^\w+$/,
|
||||
'select' => [
|
||||
{
|
||||
'select' => [ {
|
||||
'k' => 'Apache',
|
||||
'v' => 'Apache'
|
||||
},
|
||||
|
@ -886,8 +879,7 @@ qr/(?:(?:https?):\/\/(?:(?:(?:(?:(?:(?:[a-zA-Z0-9][-a-zA-Z0-9]*)?[a-zA-Z0-9])[.]
|
|||
},
|
||||
'confirmFormMethod' => {
|
||||
'default' => 'post',
|
||||
'select' => [
|
||||
{
|
||||
'select' => [ {
|
||||
'k' => 'get',
|
||||
'v' => 'GET'
|
||||
},
|
||||
|
@ -1185,8 +1177,7 @@ qr/^(?:\*\.)?(?:(?:(?:(?:[a-zA-Z0-9][-a-zA-Z0-9]*)?[a-zA-Z0-9])[.])*(?:[a-zA-Z][
|
|||
},
|
||||
'infoFormMethod' => {
|
||||
'default' => 'get',
|
||||
'select' => [
|
||||
{
|
||||
'select' => [ {
|
||||
'k' => 'get',
|
||||
'v' => 'GET'
|
||||
},
|
||||
|
@ -1392,8 +1383,7 @@ qr/^(?:(?:(?:(?:[a-zA-Z0-9][-a-zA-Z0-9]*)?[a-zA-Z0-9])[.])*(?:[a-zA-Z][-a-zA-Z0-
|
|||
},
|
||||
'ldapSearchDeref' => {
|
||||
'default' => 'find',
|
||||
'select' => [
|
||||
{
|
||||
'select' => [ {
|
||||
'k' => 'never',
|
||||
'v' => 'never'
|
||||
},
|
||||
|
@ -1750,8 +1740,7 @@ qr/^(?:\*\.)?(?:(?:(?:(?:[a-zA-Z0-9][-a-zA-Z0-9]*)?[a-zA-Z0-9])[.])*(?:[a-zA-Z][
|
|||
},
|
||||
'oidcOPMetaDataOptionsDisplay' => {
|
||||
'default' => '',
|
||||
'select' => [
|
||||
{
|
||||
'select' => [ {
|
||||
'k' => '',
|
||||
'v' => ''
|
||||
},
|
||||
|
@ -1805,8 +1794,7 @@ qr/^(?:\*\.)?(?:(?:(?:(?:[a-zA-Z0-9][-a-zA-Z0-9]*)?[a-zA-Z0-9])[.])*(?:[a-zA-Z][
|
|||
},
|
||||
'oidcOPMetaDataOptionsTokenEndpointAuthMethod' => {
|
||||
'default' => 'client_secret_post',
|
||||
'select' => [
|
||||
{
|
||||
'select' => [ {
|
||||
'k' => 'client_secret_post',
|
||||
'v' => 'client_secret_post'
|
||||
},
|
||||
|
@ -1872,8 +1860,7 @@ qr/^(?:\*\.)?(?:(?:(?:(?:[a-zA-Z0-9][-a-zA-Z0-9]*)?[a-zA-Z0-9])[.])*(?:[a-zA-Z][
|
|||
},
|
||||
'oidcRPMetaDataOptionsIDTokenSignAlg' => {
|
||||
'default' => 'HS512',
|
||||
'select' => [
|
||||
{
|
||||
'select' => [ {
|
||||
'k' => 'none',
|
||||
'v' => 'None'
|
||||
},
|
||||
|
@ -1910,8 +1897,7 @@ qr/^(?:\*\.)?(?:(?:(?:(?:[a-zA-Z0-9][-a-zA-Z0-9]*)?[a-zA-Z0-9])[.])*(?:[a-zA-Z][
|
|||
},
|
||||
'oidcRPMetaDataOptionsLogoutType' => {
|
||||
'default' => 'front',
|
||||
'select' => [
|
||||
{
|
||||
'select' => [ {
|
||||
'k' => 'front',
|
||||
'v' => 'Front Channel'
|
||||
},
|
||||
|
@ -2108,8 +2094,7 @@ qr/^(?:\*\.)?(?:(?:(?:(?:[a-zA-Z0-9][-a-zA-Z0-9]*)?[a-zA-Z0-9])[.])*(?:[a-zA-Z][
|
|||
},
|
||||
'passwordDB' => {
|
||||
'default' => 'Demo',
|
||||
'select' => [
|
||||
{
|
||||
'select' => [ {
|
||||
'k' => 'AD',
|
||||
'v' => 'Active Directory'
|
||||
},
|
||||
|
@ -2235,8 +2220,7 @@ qr/(?:(?:https?):\/\/(?:(?:(?:(?:(?:(?:[a-zA-Z0-9][-a-zA-Z0-9]*)?[a-zA-Z0-9])[.]
|
|||
},
|
||||
'portalSkin' => {
|
||||
'default' => 'bootstrap',
|
||||
'select' => [
|
||||
{
|
||||
'select' => [ {
|
||||
'k' => 'bootstrap',
|
||||
'v' => 'Bootstrap'
|
||||
}
|
||||
|
@ -2244,8 +2228,7 @@ qr/(?:(?:https?):\/\/(?:(?:(?:(?:(?:(?:[a-zA-Z0-9][-a-zA-Z0-9]*)?[a-zA-Z0-9])[.]
|
|||
'type' => 'portalskin'
|
||||
},
|
||||
'portalSkinBackground' => {
|
||||
'select' => [
|
||||
{
|
||||
'select' => [ {
|
||||
'k' => '',
|
||||
'v' => 'None'
|
||||
},
|
||||
|
@ -2347,8 +2330,7 @@ qr/^(?:\*\.)?(?:(?:(?:(?:[a-zA-Z0-9][-a-zA-Z0-9]*)?[a-zA-Z0-9])[.])*(?:[a-zA-Z][
|
|||
},
|
||||
'redirectFormMethod' => {
|
||||
'default' => 'get',
|
||||
'select' => [
|
||||
{
|
||||
'select' => [ {
|
||||
'k' => 'get',
|
||||
'v' => 'GET'
|
||||
},
|
||||
|
@ -2364,8 +2346,7 @@ qr/^(?:\*\.)?(?:(?:(?:(?:[a-zA-Z0-9][-a-zA-Z0-9]*)?[a-zA-Z0-9])[.])*(?:[a-zA-Z][
|
|||
},
|
||||
'registerDB' => {
|
||||
'default' => 'Null',
|
||||
'select' => [
|
||||
{
|
||||
'select' => [ {
|
||||
'k' => 'AD',
|
||||
'v' => 'Active Directory'
|
||||
},
|
||||
|
@ -2596,8 +2577,7 @@ qr/(?:(?:https?):\/\/(?:(?:(?:(?:(?:(?:[a-zA-Z0-9][-a-zA-Z0-9]*)?[a-zA-Z0-9])[.]
|
|||
},
|
||||
'samlIDPMetaDataOptionsEncryptionMode' => {
|
||||
'default' => 'none',
|
||||
'select' => [
|
||||
{
|
||||
'select' => [ {
|
||||
'k' => 'none',
|
||||
'v' => 'None'
|
||||
},
|
||||
|
@ -2629,8 +2609,7 @@ qr/(?:(?:https?):\/\/(?:(?:(?:(?:(?:(?:[a-zA-Z0-9][-a-zA-Z0-9]*)?[a-zA-Z0-9])[.]
|
|||
},
|
||||
'samlIDPMetaDataOptionsNameIDFormat' => {
|
||||
'default' => '',
|
||||
'select' => [
|
||||
{
|
||||
'select' => [ {
|
||||
'k' => '',
|
||||
'v' => ''
|
||||
},
|
||||
|
@ -2679,8 +2658,7 @@ qr/(?:(?:https?):\/\/(?:(?:(?:(?:(?:(?:[a-zA-Z0-9][-a-zA-Z0-9]*)?[a-zA-Z0-9])[.]
|
|||
},
|
||||
'samlIDPMetaDataOptionsRequestedAuthnContext' => {
|
||||
'default' => '',
|
||||
'select' => [
|
||||
{
|
||||
'select' => [ {
|
||||
'k' => '',
|
||||
'v' => ''
|
||||
},
|
||||
|
@ -2717,8 +2695,7 @@ qr/(?:(?:https?):\/\/(?:(?:(?:(?:(?:(?:[a-zA-Z0-9][-a-zA-Z0-9]*)?[a-zA-Z0-9])[.]
|
|||
},
|
||||
'samlIDPMetaDataOptionsSLOBinding' => {
|
||||
'default' => '',
|
||||
'select' => [
|
||||
{
|
||||
'select' => [ {
|
||||
'k' => '',
|
||||
'v' => ''
|
||||
},
|
||||
|
@ -2739,8 +2716,7 @@ qr/(?:(?:https?):\/\/(?:(?:(?:(?:(?:(?:[a-zA-Z0-9][-a-zA-Z0-9]*)?[a-zA-Z0-9])[.]
|
|||
},
|
||||
'samlIDPMetaDataOptionsSSOBinding' => {
|
||||
'default' => '',
|
||||
'select' => [
|
||||
{
|
||||
'select' => [ {
|
||||
'k' => '',
|
||||
'v' => ''
|
||||
},
|
||||
|
@ -2898,8 +2874,7 @@ qr/(?:(?:https?):\/\/(?:(?:(?:(?:(?:(?:[a-zA-Z0-9][-a-zA-Z0-9]*)?[a-zA-Z0-9])[.]
|
|||
},
|
||||
'samlServiceSignatureMethod' => {
|
||||
'default' => 'RSA_SHA1',
|
||||
'select' => [
|
||||
{
|
||||
'select' => [ {
|
||||
'k' => 'RSA_SHA1',
|
||||
'v' => 'RSA SHA1'
|
||||
},
|
||||
|
@ -2944,8 +2919,7 @@ qr/(?:(?:https?):\/\/(?:(?:(?:(?:(?:(?:[a-zA-Z0-9][-a-zA-Z0-9]*)?[a-zA-Z0-9])[.]
|
|||
},
|
||||
'samlSPMetaDataOptionsEncryptionMode' => {
|
||||
'default' => 'none',
|
||||
'select' => [
|
||||
{
|
||||
'select' => [ {
|
||||
'k' => 'none',
|
||||
'v' => 'None'
|
||||
},
|
||||
|
@ -2966,8 +2940,7 @@ qr/(?:(?:https?):\/\/(?:(?:(?:(?:(?:(?:[a-zA-Z0-9][-a-zA-Z0-9]*)?[a-zA-Z0-9])[.]
|
|||
},
|
||||
'samlSPMetaDataOptionsNameIDFormat' => {
|
||||
'default' => '',
|
||||
'select' => [
|
||||
{
|
||||
'select' => [ {
|
||||
'k' => '',
|
||||
'v' => ''
|
||||
},
|
||||
|
@ -3100,8 +3073,7 @@ qr/(?:(?:https?):\/\/(?:(?:(?:(?:(?:(?:[a-zA-Z0-9][-a-zA-Z0-9]*)?[a-zA-Z0-9])[.]
|
|||
},
|
||||
'securedCookie' => {
|
||||
'default' => 0,
|
||||
'select' => [
|
||||
{
|
||||
'select' => [ {
|
||||
'k' => '0',
|
||||
'v' => 'unsecuredCookie'
|
||||
},
|
||||
|
@ -3221,8 +3193,7 @@ qr/^(?:(?:(?:(?:(?:(?:[a-zA-Z0-9][-a-zA-Z0-9]*)?[a-zA-Z0-9])[.])*(?:[a-zA-Z][-a-
|
|||
},
|
||||
'SMTPTLS' => {
|
||||
'default' => '',
|
||||
'select' => [
|
||||
{
|
||||
'select' => [ {
|
||||
'k' => '',
|
||||
'v' => 'none'
|
||||
},
|
||||
|
@ -3400,8 +3371,7 @@ qr/^(?:(?:(?:(?:(?:(?:[a-zA-Z0-9][-a-zA-Z0-9]*)?[a-zA-Z0-9])[.])*(?:[a-zA-Z][-a-
|
|||
},
|
||||
'userDB' => {
|
||||
'default' => 'Same',
|
||||
'select' => [
|
||||
{
|
||||
'select' => [ {
|
||||
'k' => 'Same',
|
||||
'v' => 'Same'
|
||||
},
|
||||
|
@ -3483,8 +3453,7 @@ qr/^(?:(?:(?:(?:(?:(?:[a-zA-Z0-9][-a-zA-Z0-9]*)?[a-zA-Z0-9])[.])*(?:[a-zA-Z][-a-
|
|||
},
|
||||
'vhostType' => {
|
||||
'default' => 'Main',
|
||||
'select' => [
|
||||
{
|
||||
'select' => [ {
|
||||
'k' => 'Main',
|
||||
'v' => 'Main'
|
||||
},
|
||||
|
|
|
@ -269,8 +269,7 @@ $defaultAttr}
|
|||
foreach ( @simpleHashKeys, @doubleHashKeys, sort keys %cnodesRe ) {
|
||||
$ra->add($_);
|
||||
}
|
||||
foreach (
|
||||
qw(
|
||||
foreach ( qw(
|
||||
exportedHeaders locationRules post vhostOptions
|
||||
samlIDPMetaDataXML samlIDPMetaDataExportedAttributes
|
||||
samlIDPMetaDataOptions samlSPMetaDataXML
|
||||
|
@ -462,8 +461,7 @@ sub scanTree {
|
|||
$jleaf->{"_$n"} = [];
|
||||
$self->scanTree( $leaf->{$n}, $jleaf->{"_$n"}, $prefix,
|
||||
"$path.$nodeName\[$ord\]" );
|
||||
if (
|
||||
(
|
||||
if ( (
|
||||
$leaf->{title} eq 'authParams'
|
||||
and $n eq 'nodes_cond'
|
||||
)
|
||||
|
|
|
@ -2944,8 +2944,7 @@ m{^(?:ldapi://[^/]*/?|\w[\w\-\.]*(?::\d{1,5})?|ldap(?:s|\+tls)?://\w[\w\-\.]*(?:
|
|||
keyTest => qr/^(\d*)?[a-zA-Z0-9_]+$/,
|
||||
keyMsgFail => '__badChoiceKey__',
|
||||
test => sub { 1 },
|
||||
select => [
|
||||
[
|
||||
select => [ [
|
||||
{ k => 'Apache', v => 'Apache' },
|
||||
{ k => 'AD', v => 'Active Directory' },
|
||||
{
|
||||
|
|
|
@ -103,8 +103,7 @@ sub cTrees {
|
|||
{
|
||||
title => "samlSPMetaDataOptions",
|
||||
help => 'idpsaml.html#options',
|
||||
nodes => [
|
||||
{
|
||||
nodes => [ {
|
||||
title => "samlSPMetaDataOptionsAuthnResponse",
|
||||
form => 'simpleInputContainer',
|
||||
nodes => [
|
||||
|
@ -144,8 +143,7 @@ sub cTrees {
|
|||
'oidcOPMetaDataExportedVars',
|
||||
{
|
||||
title => 'oidcOPMetaDataOptions',
|
||||
nodes => [
|
||||
{
|
||||
nodes => [ {
|
||||
title => 'oidcOPMetaDataOptionsConfiguration',
|
||||
form => 'simpleInputContainer',
|
||||
nodes => [
|
||||
|
@ -187,8 +185,7 @@ sub cTrees {
|
|||
'oidcRPMetaDataExportedVars',
|
||||
{
|
||||
title => 'oidcRPMetaDataOptions',
|
||||
nodes => [
|
||||
{
|
||||
nodes => [ {
|
||||
title => 'oidcRPMetaDataOptionsAuthentication',
|
||||
form => 'simpleInputContainer',
|
||||
nodes => [
|
||||
|
@ -225,8 +222,7 @@ sub cTrees {
|
|||
},
|
||||
'oidcRPMetaDataOptionsExtraClaims',
|
||||
],
|
||||
casSrvMetaDataNode => [
|
||||
{
|
||||
casSrvMetaDataNode => [ {
|
||||
title => 'casSrvMetaDataOptions',
|
||||
form => 'simpleInputContainer',
|
||||
nodes => [
|
||||
|
@ -240,8 +236,7 @@ sub cTrees {
|
|||
'casSrvMetaDataExportedVars',
|
||||
'casSrvMetaDataOptionsProxiedServices',
|
||||
],
|
||||
casAppMetaDataNode => [
|
||||
{
|
||||
casAppMetaDataNode => [ {
|
||||
title => 'casAppMetaDataOptions',
|
||||
form => 'simpleInputContainer',
|
||||
nodes => [
|
||||
|
|
|
@ -24,11 +24,9 @@ our $VERSION = '2.0.2';
|
|||
# * confirmFormMethod
|
||||
# * redirectFormMethod
|
||||
sub tree {
|
||||
return [
|
||||
{
|
||||
return [ {
|
||||
title => 'generalParameters',
|
||||
nodes => [
|
||||
{
|
||||
nodes => [ {
|
||||
title => 'portalParams',
|
||||
help => 'portal.html',
|
||||
nodes => [
|
||||
|
@ -36,8 +34,7 @@ sub tree {
|
|||
{
|
||||
title => 'portalMenu',
|
||||
help => 'portalmenu.html',
|
||||
nodes => [
|
||||
{
|
||||
nodes => [ {
|
||||
title => 'portalModules',
|
||||
form => 'simpleInputContainer',
|
||||
nodes => [
|
||||
|
@ -119,8 +116,7 @@ sub tree {
|
|||
nodes => [
|
||||
'authentication', 'userDB', 'passwordDB', 'registerDB'
|
||||
],
|
||||
nodes_cond => [
|
||||
{
|
||||
nodes_cond => [ {
|
||||
title => 'adParams',
|
||||
help => 'authad.html',
|
||||
form => 'simpleInputContainer',
|
||||
|
@ -152,8 +148,7 @@ sub tree {
|
|||
{
|
||||
title => 'dbiConnection',
|
||||
help => 'authdbi.html#connection',
|
||||
nodes => [
|
||||
{
|
||||
nodes => [ {
|
||||
title => 'dbiConnectionAuth',
|
||||
form => 'simpleInputContainer',
|
||||
nodes => [
|
||||
|
@ -427,8 +422,7 @@ sub tree {
|
|||
{
|
||||
title => 'issuerParams',
|
||||
help => 'start.html#identity_provider',
|
||||
nodes => [
|
||||
{
|
||||
nodes => [ {
|
||||
title => 'issuerDBSAML',
|
||||
help => 'idpsaml.html',
|
||||
form => 'simpleInputContainer',
|
||||
|
@ -601,8 +595,7 @@ sub tree {
|
|||
{
|
||||
title => 'passwordManagement',
|
||||
help => 'resetpassword.html',
|
||||
nodes => [
|
||||
{
|
||||
nodes => [ {
|
||||
title => 'mailContent',
|
||||
form => 'simpleInputContainer',
|
||||
nodes => [
|
||||
|
@ -649,8 +642,7 @@ sub tree {
|
|||
{
|
||||
title => 'secondFactors',
|
||||
help => 'secondfactor.html',
|
||||
nodes => [
|
||||
{
|
||||
nodes => [ {
|
||||
title => 'utotp2f',
|
||||
help => 'utotp2f.html',
|
||||
form => 'simpleInputContainer',
|
||||
|
@ -839,8 +831,7 @@ sub tree {
|
|||
{
|
||||
title => 'samlServiceSecurity',
|
||||
help => 'samlservice.html#security_parameters',
|
||||
nodes => [
|
||||
{
|
||||
nodes => [ {
|
||||
title => 'samlServiceSecuritySig',
|
||||
form => 'RSAKey',
|
||||
group => [
|
||||
|
@ -957,8 +948,7 @@ sub tree {
|
|||
{
|
||||
title => 'samlAttributeAuthorityDescriptor',
|
||||
help => 'samlservice.html#attribute_authority',
|
||||
nodes => [
|
||||
{
|
||||
nodes => [ {
|
||||
title =>
|
||||
'samlAttributeAuthorityDescriptorAttributeService',
|
||||
nodes => [
|
||||
|
@ -1026,8 +1016,7 @@ sub tree {
|
|||
'oidcServiceMetaDataAuthnContext',
|
||||
{
|
||||
title => 'oidcServiceMetaDataSecurity',
|
||||
nodes => [
|
||||
{
|
||||
nodes => [ {
|
||||
title => 'oidcServiceMetaDataKeys',
|
||||
form => 'RSAKeyNoPassword',
|
||||
group => [
|
||||
|
|
|
@ -234,8 +234,7 @@ sub _setKey {
|
|||
sub _save {
|
||||
my ( $self, $new ) = @_;
|
||||
require Lemonldap::NG::Manager::Conf::Parser;
|
||||
my $parser = Lemonldap::NG::Manager::Conf::Parser->new(
|
||||
{
|
||||
my $parser = Lemonldap::NG::Manager::Conf::Parser->new( {
|
||||
newConf => $new,
|
||||
refConf => $self->mgr->currentConf,
|
||||
req => $self->req
|
||||
|
|
|
@ -90,10 +90,8 @@ sub diff {
|
|||
while ( my $key = shift @{ $keys[1] } ) {
|
||||
next unless ( defined( $conf[1]->{$key} ) );
|
||||
next if ( $key =~ $hashParameters and not( %{ $conf[1]->{$key} } ) );
|
||||
if (
|
||||
(
|
||||
not ref( $conf[1]->{$key} ) and not(
|
||||
(
|
||||
if ( (
|
||||
not ref( $conf[1]->{$key} ) and not( (
|
||||
defined defaultValue( $self, $key )
|
||||
and $conf[1]->{$key} eq defaultValue( $self, $key )
|
||||
)
|
||||
|
|
|
@ -1070,8 +1070,7 @@ sub _unitTest {
|
|||
my $msg = $attr->{msgFail} // $type->{msgFail};
|
||||
$res = 0
|
||||
unless (
|
||||
$self->_execTest(
|
||||
{
|
||||
$self->_execTest( {
|
||||
keyTest => $attr->{keyTest} // $type->{keyTest},
|
||||
keyMsgFail => $attr->{keyMsgFail}
|
||||
// $type->{keyMsgFail},
|
||||
|
|
|
@ -499,8 +499,7 @@ sub tests {
|
|||
return 1 unless ( defined $conf->{totp2fDigits} );
|
||||
return (
|
||||
1,
|
||||
(
|
||||
(
|
||||
( (
|
||||
$conf->{totp2fDigits} == 6
|
||||
or $conf->{totp2fDigits} == 8
|
||||
)
|
||||
|
|
|
@ -109,8 +109,7 @@ sub setNotifAccess {
|
|||
unless (
|
||||
eval {
|
||||
$self->notifAccess(
|
||||
$type->new(
|
||||
{
|
||||
$type->new( {
|
||||
%{ $self->{notificationStorageOptions} },
|
||||
p => $self,
|
||||
conf => $self
|
||||
|
|
|
@ -236,8 +236,7 @@ sub sessions {
|
|||
value => $uid,
|
||||
count => scalar( @{ $r->{$uid} } ),
|
||||
sessions => [
|
||||
map {
|
||||
{
|
||||
map { {
|
||||
session => $_->{_sessionId},
|
||||
date => $_->{_utime}
|
||||
}
|
||||
|
|
|
@ -30,8 +30,7 @@ my $currentConf;
|
|||
|
||||
# 1
|
||||
ok(
|
||||
$currentConf = Lemonldap::NG::Common::Conf->new(
|
||||
{
|
||||
$currentConf = Lemonldap::NG::Common::Conf->new( {
|
||||
confFile => 'test/lemonldap-ng.ini',
|
||||
noCache => 1,
|
||||
}
|
||||
|
@ -43,8 +42,7 @@ $Lemonldap::NG::Common::Conf::msg = '';
|
|||
# 2
|
||||
my $new;
|
||||
ok(
|
||||
$new = Lemonldap::NG::Common::Conf->new(
|
||||
{
|
||||
$new = Lemonldap::NG::Common::Conf->new( {
|
||||
type => $module,
|
||||
%$args,
|
||||
force => 1,
|
||||
|
|
|
@ -64,8 +64,7 @@ count(2);
|
|||
|
||||
foreach my $query (@hkeys) {
|
||||
my $href = &client->jsonResponse( "/confs/1/$query", '' );
|
||||
ok(
|
||||
(
|
||||
ok( (
|
||||
( ref $href eq 'ARRAY' )
|
||||
or ( ( ref $href eq 'HASH' )
|
||||
and ( $href->{error} =~ /setDefault$/ ) )
|
||||
|
|
|
@ -129,8 +129,7 @@ done_testing( count() );
|
|||
`rm -rf t/sessions`;
|
||||
|
||||
sub changes {
|
||||
return [
|
||||
{
|
||||
return [ {
|
||||
'key' => 'portal',
|
||||
'new' => 'http://auth2.example.com/',
|
||||
'old' => 'http://auth.example.com/'
|
||||
|
|
|
@ -107,8 +107,7 @@ done_testing( count() );
|
|||
`rm -rf t/sessions`;
|
||||
|
||||
sub changes {
|
||||
return [
|
||||
{
|
||||
return [ {
|
||||
'key' => 'portal',
|
||||
'new' => 'http://auth2.example.com/',
|
||||
'old' => 'http://auth.example.com/'
|
||||
|
|
|
@ -20,8 +20,7 @@ ok( $res->[0] == 200, "Result code is 200" );
|
|||
ok( $resBody = from_json( $res->[2]->[0] ), "Result body contains JSON text" );
|
||||
ok( $resBody->{result} == 0, "JSON response contains \"result:0\"" )
|
||||
or print STDERR Dumper($res);
|
||||
ok(
|
||||
(
|
||||
ok( (
|
||||
$resBody->{details}->{__errors__}
|
||||
and @{ $resBody->{details}->{__errors__} } == 1
|
||||
),
|
||||
|
|
|
@ -15,8 +15,7 @@ $count += 2;
|
|||
|
||||
foreach my $attr ( keys %$attrs ) {
|
||||
next if ( $attr =~ /^virtualHosts|.*MetaDataNodes|applicationList$/ );
|
||||
ok(
|
||||
(
|
||||
ok( (
|
||||
ref( $attrs->{$attr}->{test} )
|
||||
or ref( $types->{ $attrs->{$attr}->{type} }->{test} )
|
||||
),
|
||||
|
@ -24,8 +23,7 @@ foreach my $attr ( keys %$attrs ) {
|
|||
);
|
||||
$count++;
|
||||
if ( $attr =~ qr/^$simpleHashKeys$/o ) {
|
||||
ok(
|
||||
(
|
||||
ok( (
|
||||
ref $attrs->{$attr}->{keyTest}
|
||||
or ref $types->{ $attrs->{$attr}->{type} }->{keyTest}
|
||||
),
|
||||
|
|
|
@ -13,8 +13,7 @@ sub newSession {
|
|||
my ( $uid, $ip ) = splice @_;
|
||||
my $tmp;
|
||||
ok(
|
||||
$tmp = Lemonldap::NG::Common::Session->new(
|
||||
{
|
||||
$tmp = Lemonldap::NG::Common::Session->new( {
|
||||
storageModule => 'Apache::Session::File',
|
||||
storageModuleOptions => {
|
||||
Directory => 't/sessions',
|
||||
|
@ -27,8 +26,7 @@ sub newSession {
|
|||
'Sessions module'
|
||||
);
|
||||
count(1);
|
||||
$tmp->update(
|
||||
{
|
||||
$tmp->update( {
|
||||
ipAddr => $ip,
|
||||
_whatToTrace => $uid,
|
||||
uid => $uid,
|
||||
|
@ -98,22 +96,19 @@ count(4);
|
|||
|
||||
# New GroupBy query test with 4 sessions
|
||||
$res = &client->jsonResponse( '/sessions/global', 'groupBy=uid' );
|
||||
ok(
|
||||
(
|
||||
ok( (
|
||||
$res->{values}->[0]->{value} eq 'dwho'
|
||||
and $res->{values}->[0]->{count} == 1
|
||||
),
|
||||
'1st user is dwho'
|
||||
) or print STDERR Dumper($res);
|
||||
ok(
|
||||
(
|
||||
ok( (
|
||||
$res->{values}->[1]->{value} eq 'dwho2'
|
||||
and $res->{values}->[1]->{count} == 1
|
||||
),
|
||||
'2nd user is dwho2'
|
||||
) or print STDERR Dumper($res);
|
||||
ok(
|
||||
(
|
||||
ok( (
|
||||
$res->{values}->[2]->{value} eq 'foo'
|
||||
and $res->{values}->[2]->{count} == 2
|
||||
),
|
||||
|
|
|
@ -13,8 +13,7 @@ sub newSession {
|
|||
my ( $uid, $ip, $kind, $sfaDevices ) = splice @_;
|
||||
my $tmp;
|
||||
ok(
|
||||
$tmp = Lemonldap::NG::Common::Session->new(
|
||||
{
|
||||
$tmp = Lemonldap::NG::Common::Session->new( {
|
||||
storageModule => 'Apache::Session::File',
|
||||
storageModuleOptions => {
|
||||
Directory => 't/sessions',
|
||||
|
@ -27,8 +26,7 @@ sub newSession {
|
|||
'Sessions module'
|
||||
);
|
||||
count(1);
|
||||
$tmp->update(
|
||||
{
|
||||
$tmp->update( {
|
||||
ipAddr => $ip,
|
||||
_whatToTrace => $uid,
|
||||
uid => $uid,
|
||||
|
@ -51,8 +49,7 @@ $ids[0] = newSession( 'dwho', '127.10.0.1', 'SSO', $sfaDevices );
|
|||
|
||||
# Peristent sesssions
|
||||
$ids[1] = newSession( 'msmith', '127.10.0.1', 'Persistent', $sfaDevices );
|
||||
$sfaDevices = [
|
||||
{
|
||||
$sfaDevices = [ {
|
||||
"name" => "MyU2FKey",
|
||||
"type" => "U2F",
|
||||
"_userKey" => "123456",
|
||||
|
@ -67,8 +64,7 @@ $sfaDevices = [
|
|||
}
|
||||
];
|
||||
$ids[2] = newSession( 'rtyler', '127.10.0.1', 'Persistent', $sfaDevices );
|
||||
$sfaDevices = [
|
||||
{
|
||||
$sfaDevices = [ {
|
||||
"name" => "MyU2FKey",
|
||||
"type" => "U2F",
|
||||
"_userKey" => "123456",
|
||||
|
@ -89,8 +85,7 @@ $sfaDevices = [
|
|||
}
|
||||
];
|
||||
$ids[3] = newSession( 'dwho', '127.10.0.1', 'Persistent', $sfaDevices );
|
||||
$sfaDevices = [
|
||||
{
|
||||
$sfaDevices = [ {
|
||||
"name" => "MyU2FKey",
|
||||
"type" => "U2F",
|
||||
"_userKey" => "123456",
|
||||
|
@ -105,8 +100,7 @@ $sfaDevices = [
|
|||
}
|
||||
];
|
||||
$ids[4] = newSession( 'davros', '127.10.0.1', 'Persistent', $sfaDevices );
|
||||
$sfaDevices = [
|
||||
{
|
||||
$sfaDevices = [ {
|
||||
"name" => "MyU2FKey",
|
||||
"type" => "U2F",
|
||||
"_userKey" => "123456",
|
||||
|
@ -126,8 +120,7 @@ count(2);
|
|||
# Single Persistent sessions access
|
||||
for ( my $i = 1 ; $i < 6 ; $i++ ) {
|
||||
$res = &client->jsonResponse("/sessions/persistent/$ids[$i]");
|
||||
ok(
|
||||
(
|
||||
ok( (
|
||||
$res->{uid}
|
||||
and $res->{uid} =~ /^(?:dwho|rtyler|msmith|davros|tof)$/
|
||||
),
|
||||
|
|
|
@ -150,8 +150,7 @@ sub scanTree {
|
|||
ok( $name =~ /^\w+$/, "Name is a string" );
|
||||
|
||||
# Nodes must have leafs or subnodes
|
||||
ok(
|
||||
(
|
||||
ok( (
|
||||
exists( $leaf->{nodes} )
|
||||
or exists( $leaf->{nodes_cond} )
|
||||
or exists( $leaf->{group} )
|
||||
|
|
|
@ -167,8 +167,7 @@ sub run {
|
|||
$self->ott->createToken( $req->sessionInfo );
|
||||
$self->logger->debug("Just one 2F is enabled");
|
||||
$self->logger->debug(" -> Redirect to 2fregisters/");
|
||||
$req->response(
|
||||
[
|
||||
$req->response( [
|
||||
302,
|
||||
[ Location => $self->conf->{portal} . '2fregisters/' ], []
|
||||
]
|
||||
|
|
|
@ -243,8 +243,7 @@ sub run {
|
|||
|
||||
# Secret is stored in a token: we choose to not accept secret returned
|
||||
# by Ajax request to avoid some attacks
|
||||
my $token = $self->ott->createToken(
|
||||
{
|
||||
my $token = $self->ott->createToken( {
|
||||
_totp2fSecret => $secret,
|
||||
}
|
||||
);
|
||||
|
|
|
@ -186,8 +186,7 @@ sub run {
|
|||
}
|
||||
|
||||
# Serialize data
|
||||
$data = to_json(
|
||||
{
|
||||
$data = to_json( {
|
||||
challenge => $data->{challenge},
|
||||
appId => $data->{appId},
|
||||
registeredKeys => \@rk
|
||||
|
|
|
@ -84,8 +84,7 @@ sub run {
|
|||
$self->logger->debug( " -> Send challenge: " . $data->{challenge} );
|
||||
|
||||
# Serialize data
|
||||
$data = to_json(
|
||||
{
|
||||
$data = to_json( {
|
||||
challenge => $data->{challenge},
|
||||
appId => $data->{appId},
|
||||
registeredKeys => \@rk
|
||||
|
|
|
@ -29,8 +29,7 @@ use Lemonldap::NG::Portal::Main::Constants qw(
|
|||
|
||||
sub init {
|
||||
my ($self) = @_;
|
||||
if (
|
||||
(
|
||||
if ( (
|
||||
$self->conf->{totp2fSelfRegistration}
|
||||
or $self->conf->{u2fSelfRegistration}
|
||||
)
|
||||
|
@ -97,8 +96,7 @@ sub run {
|
|||
$self->ott->updateToken( $token, __ch => $data->{challenge} );
|
||||
|
||||
# Serialize data
|
||||
$data = to_json(
|
||||
{
|
||||
$data = to_json( {
|
||||
challenge => $data->{challenge},
|
||||
appId => $data->{appId},
|
||||
registeredKeys => \@rk,
|
||||
|
|
|
@ -51,8 +51,7 @@ sub init {
|
|||
}
|
||||
|
||||
$self->yubi(
|
||||
Auth::Yubikey_WebClient->new(
|
||||
{
|
||||
Auth::Yubikey_WebClient->new( {
|
||||
id => $self->conf->{yubikey2fClientID},
|
||||
api => $self->conf->{yubikey2fSecretKey},
|
||||
nonce => $self->conf->{yubikey2fNonce},
|
||||
|
|
|
@ -89,8 +89,7 @@ sub extractFormInfo {
|
|||
chomp $key;
|
||||
$self->logger->debug("GPG full sign key: $key");
|
||||
my $in;
|
||||
IPC::Run::run(
|
||||
[
|
||||
IPC::Run::run( [
|
||||
'gpg', '--homedir', $self->tmp, '--keyring',
|
||||
$self->db, '--list-key', $key
|
||||
],
|
||||
|
|
|
@ -60,8 +60,7 @@ sub extractFormInfo {
|
|||
|
||||
# Case 1.1: Ajax request
|
||||
if ( $req->wantJSON ) {
|
||||
$req->response(
|
||||
[
|
||||
$req->response( [
|
||||
401,
|
||||
[
|
||||
'WWW-Authenticate' => 'Negotiate',
|
||||
|
|
|
@ -775,8 +775,7 @@ sub extractFormInfo {
|
|||
|
||||
$self->logger->debug("SOAP response $slo_body");
|
||||
|
||||
$req->response(
|
||||
[
|
||||
$req->response( [
|
||||
200,
|
||||
[
|
||||
'Content-Type' => 'application/xml',
|
||||
|
@ -785,8 +784,7 @@ sub extractFormInfo {
|
|||
[$slo_body]
|
||||
]
|
||||
);
|
||||
$req->steps(
|
||||
[
|
||||
$req->steps( [
|
||||
@{ $self->p->beforeLogout },
|
||||
sub {
|
||||
my ($req) = @_;
|
||||
|
@ -845,8 +843,7 @@ sub extractFormInfo {
|
|||
return PE_SAML_ART_ERROR;
|
||||
}
|
||||
|
||||
$req->response(
|
||||
[
|
||||
$req->response( [
|
||||
200,
|
||||
[
|
||||
'Content-Type' => 'application/xml',
|
||||
|
|
|
@ -152,8 +152,7 @@ sub handler {
|
|||
# olStyleUrl can be set to 1 to use & instead of ;
|
||||
$urldc .= (
|
||||
$cdc_idp
|
||||
? (
|
||||
(
|
||||
? ( (
|
||||
$urldc =~ /\?/
|
||||
? ( $self->{oldStyleUrl} ? '&' : ';' )
|
||||
: '?'
|
||||
|
|
|
@ -5,18 +5,18 @@ use Mouse;
|
|||
use URI;
|
||||
use Lemonldap::NG::Common::FormEncode;
|
||||
use Lemonldap::NG::Portal::Main::Constants qw(
|
||||
PE_CAS_SERVICE_NOT_ALLOWED
|
||||
PE_CONFIRM
|
||||
PE_ERROR
|
||||
PE_LOGOUT_OK
|
||||
PE_OK
|
||||
PE_SENDRESPONSE
|
||||
PE_CAS_SERVICE_NOT_ALLOWED
|
||||
PE_CONFIRM
|
||||
PE_ERROR
|
||||
PE_LOGOUT_OK
|
||||
PE_OK
|
||||
PE_SENDRESPONSE
|
||||
);
|
||||
|
||||
our $VERSION = '2.0.0';
|
||||
|
||||
extends 'Lemonldap::NG::Portal::Main::Issuer',
|
||||
'Lemonldap::NG::Portal::Lib::CAS';
|
||||
'Lemonldap::NG::Portal::Lib::CAS';
|
||||
|
||||
# INITIALIZATION
|
||||
|
||||
|
@ -31,8 +31,8 @@ sub init {
|
|||
# Parse activation rule
|
||||
my $hd = $self->p->HANDLER;
|
||||
$self->logger->debug( "CAS rule -> " . $self->conf->{issuerDBCASRule} );
|
||||
my $rule
|
||||
= $hd->buildSub( $hd->substitute( $self->conf->{issuerDBCASRule} ) );
|
||||
my $rule =
|
||||
$hd->buildSub( $hd->substitute( $self->conf->{issuerDBCASRule} ) );
|
||||
unless ($rule) {
|
||||
$self->error( "Bad CAS rule -> " . $hd->tsv->{jail}->error );
|
||||
return 0;
|
||||
|
@ -63,9 +63,9 @@ sub init {
|
|||
sub storeEnvAndCheckGateway {
|
||||
my ( $self, $req ) = @_;
|
||||
my $service = $self->p->getHiddenFormValue( $req, 'service' )
|
||||
|| $req->param('service');
|
||||
|| $req->param('service');
|
||||
my $gateway = $self->p->getHiddenFormValue( $req, 'gateway' )
|
||||
|| $req->param('gateway');
|
||||
|| $req->param('gateway');
|
||||
|
||||
if ( $gateway and $gateway eq "true" ) {
|
||||
$self->logger->debug(
|
||||
|
@ -123,18 +123,18 @@ sub run {
|
|||
|
||||
# GET parameters
|
||||
my $service = $self->p->getHiddenFormValue( $req, 'service' )
|
||||
|| $req->param('service');
|
||||
|| $req->param('service');
|
||||
my $renew = $self->p->getHiddenFormValue( $req, 'renew' )
|
||||
|| $req->param('renew');
|
||||
|| $req->param('renew');
|
||||
my $gateway = $self->p->getHiddenFormValue( $req, 'gateway' )
|
||||
|| $req->param('gateway');
|
||||
|| $req->param('gateway');
|
||||
my $casServiceTicket;
|
||||
|
||||
# Renew
|
||||
if ( $renew
|
||||
and $renew eq 'true'
|
||||
and time - $req->sessionInfo->{_utime}
|
||||
> $self->conf->{portalForceAuthnInterval} )
|
||||
and time - $req->sessionInfo->{_utime} >
|
||||
$self->conf->{portalForceAuthnInterval} )
|
||||
{
|
||||
|
||||
# Authentication must be replayed
|
||||
|
@ -170,8 +170,7 @@ sub run {
|
|||
}
|
||||
if ( my $rule = $self->spRules->{$app} ) {
|
||||
if ( $rule->( $req, $req->sessionInfo ) ) {
|
||||
$self->logger->debug(
|
||||
"CAS service $service access allowed");
|
||||
$self->logger->debug("CAS service $service access allowed");
|
||||
}
|
||||
|
||||
else {
|
||||
|
@ -180,15 +179,14 @@ sub run {
|
|||
|
||||
if ( $casAccessControlPolicy =~ /^(error)$/i ) {
|
||||
$self->logger->debug(
|
||||
"Return error instead of redirecting user on CAS service"
|
||||
"Return error instead of redirecting user on CAS service"
|
||||
);
|
||||
return PE_CAS_SERVICE_NOT_ALLOWED;
|
||||
}
|
||||
|
||||
else {
|
||||
$self->logger->debug(
|
||||
"Redirect user on CAS service with a fake ticket"
|
||||
);
|
||||
"Redirect user on CAS service with a fake ticket");
|
||||
$casServiceTicket = "ST-F4K3T1CK3T";
|
||||
}
|
||||
}
|
||||
|
@ -200,10 +198,10 @@ sub run {
|
|||
# Check last authentication time to decide if
|
||||
# the authentication is recent or not
|
||||
my $casRenewFlag = 0;
|
||||
my $last_authn_utime
|
||||
= $req->{sessionInfo}->{_lastAuthnUTime} || 0;
|
||||
if (time() - $last_authn_utime
|
||||
< $self->conf->{portalForceAuthnInterval} )
|
||||
my $last_authn_utime = $req->{sessionInfo}->{_lastAuthnUTime} || 0;
|
||||
if (
|
||||
time() - $last_authn_utime <
|
||||
$self->conf->{portalForceAuthnInterval} )
|
||||
{
|
||||
$self->logger->debug(
|
||||
"Authentication is recent, will set CAS renew flag to true"
|
||||
|
@ -240,7 +238,7 @@ sub run {
|
|||
# Redirect to service
|
||||
my $service_url = $service;
|
||||
$service_url .= ( $service =~ /\?/ ? '&' : '?' )
|
||||
. build_urlencoded( ticket => $casServiceTicket );
|
||||
. build_urlencoded( ticket => $casServiceTicket );
|
||||
|
||||
$self->logger->debug("Redirect user to $service_url");
|
||||
|
||||
|
@ -326,8 +324,7 @@ sub run {
|
|||
|
||||
# This URL must not be called by authenticated users
|
||||
$self->userLogger->info(
|
||||
"CAS SERVICE VALIDATE URL called by authenticated user, ignore it"
|
||||
);
|
||||
"CAS SERVICE VALIDATE URL called by authenticated user, ignore it");
|
||||
|
||||
return PE_OK;
|
||||
}
|
||||
|
@ -335,8 +332,7 @@ sub run {
|
|||
# 5. PROXY VALIDATE [CAS 2.0]
|
||||
if ( $target eq $cas_proxyValidate || $target eq $cas_p3_proxyValidate ) {
|
||||
|
||||
$self->logger->debug(
|
||||
"URL $url detected as an CAS PROXY VALIDATE URL");
|
||||
$self->logger->debug("URL $url detected as an CAS PROXY VALIDATE URL");
|
||||
|
||||
# This URL must not be called by authenticated users
|
||||
$self->userLogger->info(
|
||||
|
@ -418,21 +414,20 @@ sub validate {
|
|||
or $service2_uri->rel($service1_uri) eq "./" )
|
||||
{
|
||||
$self->logger->notice(
|
||||
"Submitted service $service1_uri does not exactly match initial service "
|
||||
. $service2_uri
|
||||
. ' but difference is tolerated.' );
|
||||
"Submitted service $service1_uri does not exactly match initial service "
|
||||
. $service2_uri
|
||||
. ' but difference is tolerated.' );
|
||||
}
|
||||
else {
|
||||
$self->logger->error(
|
||||
"Submitted service $service does not match initial service "
|
||||
. $casServiceSession->data->{service} );
|
||||
. $casServiceSession->data->{service} );
|
||||
$self->deleteCasSession($casServiceSession);
|
||||
return $self->returnCasValidateError();
|
||||
}
|
||||
}
|
||||
else {
|
||||
$self->logger->debug(
|
||||
"Submitted service $service math initial servce");
|
||||
$self->logger->debug("Submitted service $service math initial servce");
|
||||
}
|
||||
|
||||
# Check renew
|
||||
|
@ -443,7 +438,7 @@ sub validate {
|
|||
|
||||
unless ( $casServiceSession->data->{renew} ) {
|
||||
$self->logger->error(
|
||||
"Authentication renew requested, but not done in former authentication process"
|
||||
"Authentication renew requested, but not done in former authentication process"
|
||||
);
|
||||
$self->deleteCasSession($casServiceSession);
|
||||
return $self->returnCasValidateError();
|
||||
|
@ -451,20 +446,20 @@ sub validate {
|
|||
}
|
||||
|
||||
# Open local session
|
||||
my $localSession
|
||||
= $self->p->getApacheSession( $casServiceSession->data->{_cas_id} );
|
||||
my $localSession =
|
||||
$self->p->getApacheSession( $casServiceSession->data->{_cas_id} );
|
||||
|
||||
unless ($localSession) {
|
||||
$self->logger->warn( "Local session "
|
||||
. $casServiceSession->data->{_cas_id}
|
||||
. " notfound" );
|
||||
. $casServiceSession->data->{_cas_id}
|
||||
. " notfound" );
|
||||
$self->deleteCasSession($casServiceSession);
|
||||
return $self->returnCasValidateError();
|
||||
}
|
||||
|
||||
# Get username
|
||||
my $username = $localSession->data->{ $self->conf->{casAttr}
|
||||
|| $self->conf->{whatToTrace} };
|
||||
|| $self->conf->{whatToTrace} };
|
||||
|
||||
$self->logger->debug("Get username $username");
|
||||
|
||||
|
@ -573,8 +568,8 @@ sub _validate2 {
|
|||
}
|
||||
|
||||
$self->logger->debug( "Get "
|
||||
. lc($urlType)
|
||||
. " validate request with ticket $ticket for service $service" );
|
||||
. lc($urlType)
|
||||
. " validate request with ticket $ticket for service $service" );
|
||||
|
||||
# Get CAS session corresponding to ticket
|
||||
if ( $urlType eq 'SERVICE' and !( $ticket =~ s/^ST-// ) ) {
|
||||
|
@ -611,14 +606,14 @@ sub _validate2 {
|
|||
or $service2_uri->rel($service1_uri) eq "./" )
|
||||
{
|
||||
$self->logger->notice(
|
||||
"Submitted service $service1_uri does not exactly match initial service "
|
||||
. $service2_uri
|
||||
. ' but difference is tolerated.' );
|
||||
"Submitted service $service1_uri does not exactly match initial service "
|
||||
. $service2_uri
|
||||
. ' but difference is tolerated.' );
|
||||
}
|
||||
else {
|
||||
$self->userLogger->error(
|
||||
"Submitted service $service does not match initial service "
|
||||
. $casServiceSession->data->{service} );
|
||||
. $casServiceSession->data->{service} );
|
||||
$self->deleteCasSession($casServiceSession);
|
||||
return $self->returnCasServiceValidateError( $req,
|
||||
'INVALID_SERVICE',
|
||||
|
@ -638,7 +633,7 @@ sub _validate2 {
|
|||
|
||||
unless ( $casServiceSession->data->{renew} ) {
|
||||
$self->logger->error(
|
||||
"Authentication renew requested, but not done in former authentication process"
|
||||
"Authentication renew requested, but not done in former authentication process"
|
||||
);
|
||||
$self->deleteCasSession($casServiceSession);
|
||||
return $self->returnCasValidateError();
|
||||
|
@ -677,7 +672,7 @@ sub _validate2 {
|
|||
if ($casProxyGrantingSession) {
|
||||
|
||||
my $casProxyGrantingSessionID = $casProxyGrantingSession->id;
|
||||
my $casProxyGrantingTicket = "PGT-" . $casProxyGrantingSessionID;
|
||||
my $casProxyGrantingTicket = "PGT-" . $casProxyGrantingSessionID;
|
||||
|
||||
$self->logger->debug(
|
||||
"CAS proxy granting session $casProxyGrantingSessionID created"
|
||||
|
@ -691,15 +686,16 @@ sub _validate2 {
|
|||
$casProxyGrantingTicketIOU = "PGTIOU-" . $tmpCasSession->id;
|
||||
$self->deleteCasSession($tmpCasSession);
|
||||
$self->logger->debug(
|
||||
"Generate proxy granting ticket IOU $casProxyGrantingTicketIOU"
|
||||
"Generate proxy granting ticket IOU $casProxyGrantingTicketIOU"
|
||||
);
|
||||
|
||||
# Request pgtUrl
|
||||
if ($self->callPgtUrl(
|
||||
if (
|
||||
$self->callPgtUrl(
|
||||
$pgtUrl, $casProxyGrantingTicketIOU,
|
||||
$casProxyGrantingTicket
|
||||
)
|
||||
)
|
||||
)
|
||||
{
|
||||
$self->logger->debug(
|
||||
"Proxy granting URL $pgtUrl called with success");
|
||||
|
@ -719,13 +715,13 @@ sub _validate2 {
|
|||
}
|
||||
|
||||
# Open local session
|
||||
my $localSession
|
||||
= $self->p->getApacheSession( $casServiceSession->data->{_cas_id} );
|
||||
my $localSession =
|
||||
$self->p->getApacheSession( $casServiceSession->data->{_cas_id} );
|
||||
|
||||
unless ($localSession) {
|
||||
$self->userLogger->error( "Local session "
|
||||
. $casServiceSession->data->{_cas_id}
|
||||
. " notfound" );
|
||||
. $casServiceSession->data->{_cas_id}
|
||||
. " notfound" );
|
||||
$self->deleteCasSession($casServiceSession);
|
||||
return $self->returnCasServiceValidateError( $req, 'INTERNAL_ERROR',
|
||||
'No session associated to ticket' );
|
||||
|
@ -733,16 +729,16 @@ sub _validate2 {
|
|||
|
||||
# Get username
|
||||
my $username = $localSession->data->{ $self->conf->{casAttr}
|
||||
|| $self->conf->{whatToTrace} };
|
||||
|| $self->conf->{whatToTrace} };
|
||||
|
||||
$self->logger->debug("Get username $username");
|
||||
|
||||
# Get attributes [CAS 3.0]
|
||||
my $attributes = {};
|
||||
my $ev
|
||||
= ( $app and $self->conf->{casAppMetaDataExportedVars}->{$app} )
|
||||
? $self->conf->{casAppMetaDataExportedVars}->{$app}
|
||||
: {};
|
||||
my $ev =
|
||||
( $app and $self->conf->{casAppMetaDataExportedVars}->{$app} )
|
||||
? $self->conf->{casAppMetaDataExportedVars}->{$app}
|
||||
: {};
|
||||
unless (%$ev) {
|
||||
$ev = $self->conf->{casAttributes} || {};
|
||||
}
|
||||
|
@ -750,7 +746,7 @@ sub _validate2 {
|
|||
foreach my $casAttribute ( keys %$ev ) {
|
||||
my $localSessionValue = $localSession->data->{ $ev->{$casAttribute} };
|
||||
$attributes->{$casAttribute} = $localSessionValue
|
||||
if defined $localSessionValue;
|
||||
if defined $localSessionValue;
|
||||
}
|
||||
|
||||
# Return success message
|
||||
|
|
|
@ -59,9 +59,11 @@ sub init {
|
|||
|
||||
# Parse activation rule
|
||||
my $hd = $self->p->HANDLER;
|
||||
$self->logger->debug( "OIDC rule -> " . $self->conf->{issuerDBOpenIDConnectRule} );
|
||||
my $rule
|
||||
= $hd->buildSub( $hd->substitute( $self->conf->{issuerDBOpenIDConnectRule} ) );
|
||||
$self->logger->debug(
|
||||
"OIDC rule -> " . $self->conf->{issuerDBOpenIDConnectRule} );
|
||||
my $rule =
|
||||
$hd->buildSub(
|
||||
$hd->substitute( $self->conf->{issuerDBOpenIDConnectRule} ) );
|
||||
unless ($rule) {
|
||||
$self->error( "Bad OIDC rule -> " . $hd->tsv->{jail}->error );
|
||||
return 0;
|
||||
|
@ -865,8 +867,7 @@ sub run {
|
|||
if ( $req->param('confirm') ) {
|
||||
my $err;
|
||||
if ( $req->param('confirm') == 1 ) {
|
||||
$req->steps(
|
||||
[
|
||||
$req->steps( [
|
||||
@{ $self->p->beforeLogout }, 'authLogout',
|
||||
'deleteSession'
|
||||
]
|
||||
|
|
|
@ -21,10 +21,10 @@ our $VERSION = '2.0.0';
|
|||
extends 'Lemonldap::NG::Portal::Main::Issuer',
|
||||
'Lemonldap::NG::Portal::Lib::SAML';
|
||||
|
||||
has rule => ( is => 'rw', default => sub { {} } );
|
||||
has ssoUrlRe => ( is => 'rw' );
|
||||
has rule => ( is => 'rw', default => sub { {} } );
|
||||
has ssoUrlRe => ( is => 'rw' );
|
||||
has ssoUrlArtifact => ( is => 'rw' );
|
||||
has ssoGetUrl => ( is => 'rw' );
|
||||
has ssoGetUrl => ( is => 'rw' );
|
||||
|
||||
use constant sessionKind => 'ISAML';
|
||||
use constant lsDump => '_lassoSessionDumpI';
|
||||
|
@ -43,8 +43,8 @@ sub init {
|
|||
# Parse activation rule
|
||||
my $hd = $self->p->HANDLER;
|
||||
$self->logger->debug( "SAML rule -> " . $self->conf->{issuerDBSAMLRule} );
|
||||
my $rule
|
||||
= $hd->buildSub( $hd->substitute( $self->conf->{issuerDBSAMLRule} ) );
|
||||
my $rule =
|
||||
$hd->buildSub( $hd->substitute( $self->conf->{issuerDBSAMLRule} ) );
|
||||
unless ($rule) {
|
||||
$self->error( "Bad SAML rule -> " . $hd->tsv->{jail}->error );
|
||||
return 0;
|
||||
|
@ -198,7 +198,7 @@ sub run {
|
|||
$self->userLogger->error('SAML service not authorized');
|
||||
return PE_SAML_SERVICE_NOT_ALLOWED;
|
||||
}
|
||||
|
||||
|
||||
# Session ID
|
||||
my $session_id = $req->{sessionInfo}->{_session_id} || $req->{id};
|
||||
|
||||
|
@ -913,8 +913,7 @@ sub run {
|
|||
}
|
||||
|
||||
# HTTP-POST
|
||||
if (
|
||||
(
|
||||
if ( (
|
||||
!$artifact
|
||||
and $protocolProfile eq
|
||||
Lasso::Constants::LOGIN_PROTOCOL_PROFILE_BRWS_POST
|
||||
|
|
|
@ -100,8 +100,7 @@ sub getCasSession {
|
|||
);
|
||||
}
|
||||
|
||||
my $casSession = Lemonldap::NG::Common::Session->new(
|
||||
{
|
||||
my $casSession = Lemonldap::NG::Common::Session->new( {
|
||||
%storage,
|
||||
cacheModule => $self->conf->{localSessionStorage},
|
||||
cacheModuleOptions => $self->conf->{localSessionStorageOptions},
|
||||
|
|
|
@ -190,7 +190,7 @@ sub userBind {
|
|||
my $pp_error = $resp->pp_error;
|
||||
if ( defined $pp_error ) {
|
||||
$self->{portal}->userLogger->error(
|
||||
"Password policy error $pp_error for ".$req->user);
|
||||
"Password policy error $pp_error for " . $req->user );
|
||||
return [
|
||||
PE_PP_PASSWORD_EXPIRED,
|
||||
PE_PP_ACCOUNT_LOCKED,
|
||||
|
|
|
@ -644,8 +644,7 @@ sub getOpenIDConnectSession {
|
|||
);
|
||||
}
|
||||
|
||||
my $oidcSession = Lemonldap::NG::Common::Session->new(
|
||||
{
|
||||
my $oidcSession = Lemonldap::NG::Common::Session->new( {
|
||||
%storage,
|
||||
cacheModule => $self->conf->{localSessionStorage},
|
||||
cacheModuleOptions => $self->conf->{localSessionStorageOptions},
|
||||
|
|
|
@ -43,8 +43,7 @@ sub checkRemoteId {
|
|||
|
||||
# Trying to recover session from global session storage
|
||||
|
||||
my $remoteSession = Lemonldap::NG::Common::Session->new(
|
||||
{
|
||||
my $remoteSession = Lemonldap::NG::Common::Session->new( {
|
||||
storageModule => $self->conf->{remoteGlobalStorage},
|
||||
storageModuleOptions =>
|
||||
$self->conf->{remoteGlobalStorageOptions},
|
||||
|
|
|
@ -2815,8 +2815,7 @@ sub checkDestination {
|
|||
sub getSamlSession {
|
||||
my ( $self, $id, $info ) = @_;
|
||||
|
||||
my $samlSession = Lemonldap::NG::Common::Session->new(
|
||||
{
|
||||
my $samlSession = Lemonldap::NG::Common::Session->new( {
|
||||
storageModule => $self->aModule,
|
||||
storageModuleOptions => $self->amOpts,
|
||||
cacheModule => $self->conf->{localSessionStorage},
|
||||
|
|
|
@ -98,7 +98,6 @@ use constant {
|
|||
PE_OIDC_SERVICE_NOT_ALLOWED => 90,
|
||||
PE_OID_SERVICE_NOT_ALLOWED => 91,
|
||||
|
||||
|
||||
};
|
||||
|
||||
# EXPORTER PARAMETERS
|
||||
|
@ -125,7 +124,7 @@ our @EXPORT_OK = qw( PE_SENDRESPONSE PE_INFO PE_REDIRECT PE_DONE PE_OK
|
|||
PE_CAPTCHAERROR PE_CAPTCHAEMPTY PE_REGISTERFIRSTACCESS PE_REGISTERFORMEMPTY
|
||||
PE_REGISTERALREADYEXISTS PE_NOTOKEN PE_TOKENEXPIRED HANDLER PE_U2FFAILED
|
||||
PE_UNAUTHORIZEDPARTNER PE_RENEWSESSION PE_IDPCHOICE PE_WAIT PE_MUSTAUTHN
|
||||
PE_MUSTHAVEMAIL PE_SAML_SERVICE_NOT_ALLOWED PE_OIDC_SERVICE_NOT_ALLOWED
|
||||
PE_MUSTHAVEMAIL PE_SAML_SERVICE_NOT_ALLOWED PE_OIDC_SERVICE_NOT_ALLOWED
|
||||
PE_OID_SERVICE_NOT_ALLOWED
|
||||
);
|
||||
our %EXPORT_TAGS = ( 'all' => [ @EXPORT_OK, 'import' ], );
|
||||
|
|
|
@ -601,8 +601,7 @@ sub mkOidcConsent {
|
|||
'oidcConsents',
|
||||
params => {
|
||||
partners => [
|
||||
map {
|
||||
{
|
||||
map { {
|
||||
name => $_,
|
||||
epoch => $consents->{$_}->{epoch},
|
||||
scope => $consents->{$_}->{scope},
|
||||
|
|
|
@ -88,8 +88,7 @@ has csp => ( is => 'rw' );
|
|||
sub init {
|
||||
my ( $self, $args ) = @_;
|
||||
$args ||= {};
|
||||
$self->localConfig(
|
||||
{
|
||||
$self->localConfig( {
|
||||
%{ Lemonldap::NG::Common::Conf->new( $args->{configStorage} )
|
||||
->getLocalConf('portal')
|
||||
},
|
||||
|
|
|
@ -302,8 +302,7 @@ sub authenticate {
|
|||
}
|
||||
|
||||
# Store failed login into history
|
||||
$req->steps(
|
||||
[
|
||||
$req->steps( [
|
||||
'setSessionInfo', 'setMacros',
|
||||
'setPersistentSessionInfo', 'storeHistory',
|
||||
@{ $self->afterData }, sub { PE_BADCREDENTIALS }
|
||||
|
|
|
@ -150,8 +150,7 @@ sub refresh {
|
|||
foreach ( keys %data ) {
|
||||
delete $data{$_} unless ( /^_/ or /^(?:startTime)$/ );
|
||||
}
|
||||
$req->steps(
|
||||
[
|
||||
$req->steps( [
|
||||
'getUser',
|
||||
@{ $self->betweenAuthAndData },
|
||||
'setAuthSessionInfo',
|
||||
|
@ -327,8 +326,7 @@ sub getApacheSession {
|
|||
$self->logger->debug("Try to get a new $args{kind} session");
|
||||
}
|
||||
|
||||
my $as = Lemonldap::NG::Common::Session->new(
|
||||
{
|
||||
my $as = Lemonldap::NG::Common::Session->new( {
|
||||
storageModule => $self->conf->{globalStorage},
|
||||
storageModuleOptions => $self->conf->{globalStorageOptions},
|
||||
cacheModule => $self->conf->{localSessionStorage},
|
||||
|
@ -395,8 +393,7 @@ sub getPersistentSession {
|
|||
|
||||
$info->{_session_uid} = $uid;
|
||||
|
||||
my $ps = Lemonldap::NG::Common::Session->new(
|
||||
{
|
||||
my $ps = Lemonldap::NG::Common::Session->new( {
|
||||
storageModule => $self->conf->{persistentStorage},
|
||||
storageModuleOptions => $self->conf->{persistentStorageOptions},
|
||||
id => $pid,
|
||||
|
|
|
@ -47,8 +47,7 @@ sub check {
|
|||
# Not launched methods:
|
||||
# - "extractFormInfo" due to "token"
|
||||
# - "buildCookie" useless here
|
||||
$req->steps(
|
||||
[
|
||||
$req->steps( [
|
||||
'getUser',
|
||||
'authenticate',
|
||||
@{ $self->p->betweenAuthAndData },
|
||||
|
|
|
@ -21,8 +21,7 @@ sub run {
|
|||
my ( $self, $req ) = @_;
|
||||
if ( $req->param('checkLogins') ) {
|
||||
$self->logger->debug('History asked');
|
||||
$req->info(
|
||||
(
|
||||
$req->info( (
|
||||
$req->sessionInfo->{_loginHistory}->{successLogin}
|
||||
? $self->p->mkSessionArray(
|
||||
$req->sessionInfo->{_loginHistory}->{successLogin},
|
||||
|
|
|
@ -182,8 +182,7 @@ sub _reset {
|
|||
}
|
||||
|
||||
# Search user in database
|
||||
$req->steps(
|
||||
[
|
||||
$req->steps( [
|
||||
'getUser', 'setSessionInfo',
|
||||
'setMacros', 'setGroups',
|
||||
'setPersistentSessionInfo', 'setLocalGroups'
|
||||
|
@ -548,8 +547,7 @@ sub display {
|
|||
}
|
||||
|
||||
# Display form the first time
|
||||
if (
|
||||
(
|
||||
if ( (
|
||||
$req->error == PE_MAILFORMEMPTY
|
||||
or $req->error == PE_MAILFIRSTACCESS
|
||||
or $req->error == PE_MAILNOTFOUND
|
||||
|
|
|
@ -231,8 +231,7 @@ sub newAuthSession {
|
|||
$req->{force} = 1;
|
||||
$req->user( $req->param('user') );
|
||||
$req->data->{password} = $req->param('password');
|
||||
$req->steps(
|
||||
[
|
||||
$req->steps( [
|
||||
@{ $self->p->beforeAuth },
|
||||
qw(getUser authenticate setAuthSessionInfo),
|
||||
@{ $self->p->betweenAuthAndData },
|
||||
|
|
|
@ -233,8 +233,7 @@ sub _register {
|
|||
unless ( $req->data->{register_token} or $register_session ) {
|
||||
|
||||
# Create mail token
|
||||
$register_session = $self->mailott->createToken(
|
||||
{
|
||||
$register_session = $self->mailott->createToken( {
|
||||
mail => $req->data->{registerInfo}->{mail},
|
||||
firstname => $req->data->{registerInfo}->{firstname},
|
||||
lastname => $req->data->{registerInfo}->{lastname},
|
||||
|
@ -430,8 +429,7 @@ sub display {
|
|||
);
|
||||
|
||||
# Display form the first time
|
||||
if (
|
||||
(
|
||||
if ( (
|
||||
$req->error == PE_REGISTERFORMEMPTY
|
||||
or $req->error == PE_REGISTERFIRSTACCESS
|
||||
or $req->error == PE_CAPTCHAERROR
|
||||
|
|
|
@ -222,8 +222,7 @@ sub getCookies {
|
|||
|
||||
# Launch process
|
||||
else {
|
||||
$req->steps(
|
||||
[
|
||||
$req->steps( [
|
||||
qw(getUser authenticate setAuthSessionInfo),
|
||||
@{ $self->p->betweenAuthAndData },
|
||||
$self->p->sessionData,
|
||||
|
@ -290,8 +289,7 @@ sub getAttributes {
|
|||
SOAP::Data->name(
|
||||
attributes => _buildSoapHash(
|
||||
$session->data,
|
||||
(
|
||||
(
|
||||
( (
|
||||
$session->{_session_kind}
|
||||
and $session->{_session_kind} eq 'SSO'
|
||||
)
|
||||
|
|
|
@ -58,8 +58,7 @@ sub newDevice {
|
|||
my ( $self, $req ) = @_;
|
||||
|
||||
if ( $req->param('stayconnected') ) {
|
||||
my $token = $self->ott->createToken(
|
||||
{
|
||||
my $token = $self->ott->createToken( {
|
||||
name => $req->sessionInfo->{ $self->conf->{whatToTrace} }
|
||||
}
|
||||
);
|
||||
|
|
|
@ -31,8 +31,7 @@ sub getUser {
|
|||
my ( $self, $req, %args ) = @_;
|
||||
my $res;
|
||||
$res = eval {
|
||||
$self->restCall(
|
||||
(
|
||||
$self->restCall( (
|
||||
$args{useMail}
|
||||
? $self->conf->{restMailDBUrl} || $self->conf->{restUserDBUrl}
|
||||
: $self->conf->{restUserDBUrl}
|
||||
|
|
|
@ -8,8 +8,7 @@ require 't/test-lib.pm';
|
|||
my $res;
|
||||
my $tmp;
|
||||
|
||||
my $client = LLNG::Manager::Test->new(
|
||||
{
|
||||
my $client = LLNG::Manager::Test->new( {
|
||||
ini => {
|
||||
logLevel => 'error',
|
||||
customPlugins => 't::pdata',
|
||||
|
|
|
@ -9,8 +9,7 @@ require 't/test-lib.pm';
|
|||
|
||||
my $res;
|
||||
|
||||
my $client = LLNG::Manager::Test->new(
|
||||
{
|
||||
my $client = LLNG::Manager::Test->new( {
|
||||
ini => {
|
||||
logLevel => 'error',
|
||||
passwordDB => 'Demo',
|
||||
|
|
|
@ -4,8 +4,7 @@ use IO::String;
|
|||
|
||||
require 't/test-lib.pm';
|
||||
|
||||
my $client = LLNG::Manager::Test->new(
|
||||
{
|
||||
my $client = LLNG::Manager::Test->new( {
|
||||
ini => {
|
||||
logLevel => 'error',
|
||||
useSafeJail => 1,
|
||||
|
|
|
@ -6,8 +6,7 @@ require 't/test-lib.pm';
|
|||
|
||||
my $res;
|
||||
|
||||
my $client = LLNG::Manager::Test->new(
|
||||
{
|
||||
my $client = LLNG::Manager::Test->new( {
|
||||
ini => {
|
||||
logLevel => 'error',
|
||||
useSafeJail => 1,
|
||||
|
|
|
@ -19,8 +19,7 @@ SKIP: {
|
|||
$dbh->do(
|
||||
"INSERT INTO users VALUES ('french','french','Frédéric Accents')");
|
||||
$dbh->do("INSERT INTO users VALUES ('russian','russian','Русский')");
|
||||
my $client = LLNG::Manager::Test->new(
|
||||
{
|
||||
my $client = LLNG::Manager::Test->new( {
|
||||
ini => {
|
||||
logLevel => 'error',
|
||||
useSafeJail => 1,
|
||||
|
|
|
@ -106,8 +106,7 @@ SKIP: {
|
|||
$dbh->do(
|
||||
"INSERT INTO users VALUES ('jsmith','{ssha512}wr0zU/I6f7U4bVoeOlJnNFbhF0a9np59LUeNnhokohVI/wiNzt8Y4JujfOfNQiGuiVgY+xrYggfmgpke6KdjxKS7W0GR1ZCe','John Smith')"
|
||||
);
|
||||
my $client = LLNG::Manager::Test->new(
|
||||
{
|
||||
my $client = LLNG::Manager::Test->new( {
|
||||
ini => {
|
||||
logLevel => 'error',
|
||||
useSafeJail => 1,
|
||||
|
|
|
@ -17,8 +17,7 @@ SKIP: {
|
|||
my $dbh = DBI->connect("dbi:SQLite:dbname=t/userdb.db");
|
||||
$dbh->do('CREATE TABLE users (user text,password text,name text)');
|
||||
$dbh->do("INSERT INTO users VALUES ('dwho','dwho','Doctor who')");
|
||||
my $client = LLNG::Manager::Test->new(
|
||||
{
|
||||
my $client = LLNG::Manager::Test->new( {
|
||||
ini => {
|
||||
logLevel => 'error',
|
||||
useSafeJail => 1,
|
||||
|
|
|
@ -11,8 +11,7 @@ SKIP: {
|
|||
skip 'LLNGTESTLDAP is not set', $maintests unless ( $ENV{LLNGTESTLDAP} );
|
||||
require 't/test-ldap.pm';
|
||||
|
||||
my $client = LLNG::Manager::Test->new(
|
||||
{
|
||||
my $client = LLNG::Manager::Test->new( {
|
||||
ini => {
|
||||
logLevel => 'error',
|
||||
useSafeJail => 1,
|
||||
|
|
|
@ -11,8 +11,7 @@ SKIP: {
|
|||
skip 'LLNGTESTLDAP is not set', $maintests unless ( $ENV{LLNGTESTLDAP} );
|
||||
require 't/test-ldap.pm';
|
||||
|
||||
my $client = LLNG::Manager::Test->new(
|
||||
{
|
||||
my $client = LLNG::Manager::Test->new( {
|
||||
ini => {
|
||||
logLevel => 'error',
|
||||
useSafeJail => 1,
|
||||
|
|
|
@ -10,8 +10,7 @@ my $maintests = 1;
|
|||
SKIP: {
|
||||
skip 'No AD server given', $maintests unless ( $ENV{ADSERVER} );
|
||||
|
||||
my $client = LLNG::Manager::Test->new(
|
||||
{
|
||||
my $client = LLNG::Manager::Test->new( {
|
||||
ini => {
|
||||
logLevel => 'error',
|
||||
useSafeJail => 1,
|
||||
|
|
|
@ -65,8 +65,7 @@ LWP::Protocol::PSGI->register(
|
|||
|
||||
my $res;
|
||||
|
||||
my $client = LLNG::Manager::Test->new(
|
||||
{
|
||||
my $client = LLNG::Manager::Test->new( {
|
||||
ini => {
|
||||
logLevel => 'error',
|
||||
useSafeJail => 1,
|
||||
|
|
|
@ -5,8 +5,7 @@ require 't/test-lib.pm';
|
|||
|
||||
my $res;
|
||||
|
||||
my $client = LLNG::Manager::Test->new(
|
||||
{
|
||||
my $client = LLNG::Manager::Test->new( {
|
||||
ini => {
|
||||
logLevel => 'error',
|
||||
useSafeJail => 1,
|
||||
|
|
|
@ -14,8 +14,7 @@ SKIP: {
|
|||
if ($@) {
|
||||
skip 'GSSAPI not found', $maintests;
|
||||
}
|
||||
my $client = LLNG::Manager::Test->new(
|
||||
{
|
||||
my $client = LLNG::Manager::Test->new( {
|
||||
ini => {
|
||||
logLevel => $debug,
|
||||
useSafeJail => 1,
|
||||
|
@ -32,8 +31,7 @@ SKIP: {
|
|||
'Get negotiate header' )
|
||||
or explain( $res->[1], 'WWW-Authenticate => Negotiate' );
|
||||
&Lemonldap::NG::Handler::Main::cfgNum( 0, 0 );
|
||||
$client = LLNG::Manager::Test->new(
|
||||
{
|
||||
$client = LLNG::Manager::Test->new( {
|
||||
ini => {
|
||||
logLevel => $debug,
|
||||
useSafeJail => 1,
|
||||
|
|
|
@ -5,8 +5,7 @@ require 't/test-lib.pm';
|
|||
|
||||
my $res;
|
||||
|
||||
my $client = LLNG::Manager::Test->new(
|
||||
{
|
||||
my $client = LLNG::Manager::Test->new( {
|
||||
ini => {
|
||||
logLevel => 'error',
|
||||
useSafeJail => 1,
|
||||
|
|
|
@ -5,8 +5,7 @@ require 't/test-lib.pm';
|
|||
|
||||
my $res;
|
||||
|
||||
my $client = LLNG::Manager::Test->new(
|
||||
{
|
||||
my $client = LLNG::Manager::Test->new( {
|
||||
ini => {
|
||||
logLevel => 'error',
|
||||
useSafeJail => 1,
|
||||
|
|
|
@ -8,8 +8,7 @@ require 't/test-lib.pm';
|
|||
|
||||
SKIP: {
|
||||
skip 'REMOTELLNG is not set', $maintests unless ( $ENV{REMOTELLNG} );
|
||||
my $client = LLNG::Manager::Test->new(
|
||||
{
|
||||
my $client = LLNG::Manager::Test->new( {
|
||||
ini => {
|
||||
logLevel => 'error',
|
||||
useSafeJail => 1,
|
||||
|
|
|
@ -20,8 +20,7 @@ SKIP: {
|
|||
$dbh->do('CREATE TABLE users (user text,password text,name text)');
|
||||
$dbh->do("INSERT INTO users VALUES ('dwho','dwho','Doctor who')");
|
||||
|
||||
my $client = LLNG::Manager::Test->new(
|
||||
{
|
||||
my $client = LLNG::Manager::Test->new( {
|
||||
ini => {
|
||||
logLevel => 'error',
|
||||
useSafeJail => 1,
|
||||
|
|
|
@ -21,8 +21,7 @@ SKIP: {
|
|||
$dbh->do('CREATE TABLE users (user text,password text,name text)');
|
||||
$dbh->do("INSERT INTO users VALUES ('dwho','dwho','Doctor who')");
|
||||
|
||||
my $client = LLNG::Manager::Test->new(
|
||||
{
|
||||
my $client = LLNG::Manager::Test->new( {
|
||||
ini => {
|
||||
logLevel => 'error',
|
||||
useSafeJail => 1,
|
||||
|
|
|
@ -15,8 +15,7 @@ SKIP: {
|
|||
my $res;
|
||||
use_ok('Lemonldap::NG::Common::FormEncode');
|
||||
|
||||
my $client = LLNG::Manager::Test->new(
|
||||
{
|
||||
my $client = LLNG::Manager::Test->new( {
|
||||
ini => {
|
||||
logLevel => 'error',
|
||||
authentication => 'GPG',
|
||||
|
|
|
@ -5,8 +5,7 @@ require 't/test-lib.pm';
|
|||
|
||||
my $res;
|
||||
|
||||
my $client = LLNG::Manager::Test->new(
|
||||
{
|
||||
my $client = LLNG::Manager::Test->new( {
|
||||
ini => {
|
||||
logLevel => 'error',
|
||||
useSafeJail => 1,
|
||||
|
@ -41,8 +40,7 @@ expectCookie($res);
|
|||
count(1);
|
||||
|
||||
&Lemonldap::NG::Handler::Main::cfgNum( 0, 0 );
|
||||
$client = LLNG::Manager::Test->new(
|
||||
{
|
||||
$client = LLNG::Manager::Test->new( {
|
||||
ini => {
|
||||
logLevel => 'error',
|
||||
useSafeJail => 1,
|
||||
|
|
|
@ -40,10 +40,14 @@ SKIP: {
|
|||
'Unauth SP request'
|
||||
);
|
||||
expectOK($res);
|
||||
ok( $res->[2]->[0] =~ m%<form id="lformDemo" action="#" method="post" class="login Demo">%s,
|
||||
'Found Demo choice' ) or print STDERR Dumper( $res->[2]->[0] );
|
||||
ok(
|
||||
$res->[2]->[0] =~
|
||||
m%<form id="lformDemo" action="#" method="post" class="login Demo">%s,
|
||||
'Found Demo choice'
|
||||
) or print STDERR Dumper( $res->[2]->[0] );
|
||||
ok( $res->[2]->[0] =~ m#<form[^>]+class="login SAML".*?</form>#s,
|
||||
'Found SAML choice' ) or print STDERR Dumper( $res->[2]->[0] );
|
||||
'Found SAML choice' )
|
||||
or print STDERR Dumper( $res->[2]->[0] );
|
||||
$res->[2]->[0] = $&;
|
||||
my ( $host, $url, $query ) = expectForm( $res, undef, undef, 'test' );
|
||||
|
||||
|
@ -60,14 +64,13 @@ SKIP: {
|
|||
or explain( $res->[1],
|
||||
'Set-Cookie => lemonldapidp=0; domain=.sp.com; path=/; expires=-1d' );
|
||||
( $host, $url, $query ) = expectForm( $res, undef, undef, 'confirm', );
|
||||
ok( $res->[2]->[0]
|
||||
=~ m%<img src="http://auth.sp.com/static/common/icons/sfa_manager.png" class="mr-2" alt="IDP2" title="IDP2" />%,
|
||||
ok(
|
||||
$res->[2]->[0] =~
|
||||
m%<img src="http://auth.sp.com/static/common/icons/sfa_manager.png" class="mr-2" alt="IDP2" title="IDP2" />%,
|
||||
'Found IDP icon and title tag'
|
||||
) or print STDERR Dumper( $res->[2]->[0] );
|
||||
ok( $res->[2]->[0]
|
||||
=~ /idp_Test_DisplayName/,
|
||||
'Found IDP display name'
|
||||
) or print STDERR Dumper( $res->[2]->[0] );
|
||||
ok( $res->[2]->[0] =~ /idp_Test_DisplayName/, 'Found IDP display name' )
|
||||
or print STDERR Dumper( $res->[2]->[0] );
|
||||
|
||||
my $spPdata = 'lemonldappdata=' . expectCookie( $res, 'lemonldappdata' );
|
||||
|
||||
|
@ -221,8 +224,7 @@ sub switch {
|
|||
}
|
||||
|
||||
sub sp {
|
||||
return LLNG::Manager::Test->new(
|
||||
{
|
||||
return LLNG::Manager::Test->new( {
|
||||
ini => {
|
||||
domain => 'sp.com',
|
||||
portal => 'http://auth.sp.com',
|
||||
|
@ -257,8 +259,8 @@ sub sp {
|
|||
samlIDPMetaDataOptionsCheckSSOMessageSignature => 1,
|
||||
samlIDPMetaDataOptionsCheckSLOMessageSignature => 1,
|
||||
samlIDPMetaDataOptionsForceUTF8 => 1,
|
||||
samlIDPMetaDataOptionsDisplayName => 'idp_Test_DisplayName',
|
||||
|
||||
samlIDPMetaDataOptionsDisplayName =>
|
||||
'idp_Test_DisplayName',
|
||||
|
||||
},
|
||||
idp2 => {
|
||||
|
@ -270,7 +272,7 @@ sub sp {
|
|||
samlIDPMetaDataOptionsCheckSSOMessageSignature => 1,
|
||||
samlIDPMetaDataOptionsCheckSLOMessageSignature => 1,
|
||||
samlIDPMetaDataOptionsForceUTF8 => 1,
|
||||
samlIDPMetaDataOptionsIcon => 'icons/sfa_manager.png',
|
||||
samlIDPMetaDataOptionsIcon => 'icons/sfa_manager.png',
|
||||
},
|
||||
},
|
||||
samlIDPMetaDataExportedAttributes => {
|
||||
|
@ -379,8 +381,7 @@ XVhuG8OrWQDoS5gYHSjdw1CTJyixeJwyoqA9RGYguG5nh9zndi3LWAh7Z0lx+tIz
|
|||
}
|
||||
|
||||
sub issuer {
|
||||
return LLNG::Manager::Test->new(
|
||||
{
|
||||
return LLNG::Manager::Test->new( {
|
||||
ini => {
|
||||
logLevel => $debug,
|
||||
domain => 'idp.com',
|
||||
|
|
|
@ -171,8 +171,7 @@ sub switch {
|
|||
}
|
||||
|
||||
sub issuer {
|
||||
return LLNG::Manager::Test->new(
|
||||
{
|
||||
return LLNG::Manager::Test->new( {
|
||||
ini => {
|
||||
logLevel => $debug,
|
||||
templatesDir => 'site/htdocs/static',
|
||||
|
@ -458,8 +457,7 @@ EOF
|
|||
}
|
||||
|
||||
sub sp {
|
||||
return LLNG::Manager::Test->new(
|
||||
{
|
||||
return LLNG::Manager::Test->new( {
|
||||
ini => {
|
||||
logLevel => $debug,
|
||||
domain => 'sp.com',
|
||||
|
|
|
@ -195,8 +195,7 @@ sub switch {
|
|||
}
|
||||
|
||||
sub issuer {
|
||||
return LLNG::Manager::Test->new(
|
||||
{
|
||||
return LLNG::Manager::Test->new( {
|
||||
ini => {
|
||||
logLevel => $debug,
|
||||
domain => 'idp.com',
|
||||
|
@ -480,8 +479,7 @@ EOF
|
|||
}
|
||||
|
||||
sub sp {
|
||||
return LLNG::Manager::Test->new(
|
||||
{
|
||||
return LLNG::Manager::Test->new( {
|
||||
ini => {
|
||||
logLevel => $debug,
|
||||
domain => 'sp.com',
|
||||
|
|
|
@ -33,8 +33,7 @@ clean_sessions();
|
|||
done_testing( count() );
|
||||
|
||||
sub issuer {
|
||||
return LLNG::Manager::Test->new(
|
||||
{
|
||||
return LLNG::Manager::Test->new( {
|
||||
ini => {
|
||||
logLevel => $debug,
|
||||
domain => 'idp.com',
|
||||
|
|
|
@ -201,8 +201,7 @@ sub switch {
|
|||
}
|
||||
|
||||
sub issuer {
|
||||
return LLNG::Manager::Test->new(
|
||||
{
|
||||
return LLNG::Manager::Test->new( {
|
||||
ini => {
|
||||
logLevel => $debug,
|
||||
templatesDir => 'site/htdocs/static',
|
||||
|
@ -320,8 +319,7 @@ ywIDAQAB
|
|||
}
|
||||
|
||||
sub sp {
|
||||
return LLNG::Manager::Test->new(
|
||||
{
|
||||
return LLNG::Manager::Test->new( {
|
||||
ini => {
|
||||
logLevel => $debug,
|
||||
domain => 'sp.com',
|
||||
|
|
|
@ -197,8 +197,7 @@ sub switch {
|
|||
}
|
||||
|
||||
sub issuer {
|
||||
return LLNG::Manager::Test->new(
|
||||
{
|
||||
return LLNG::Manager::Test->new( {
|
||||
ini => {
|
||||
logLevel => $debug,
|
||||
domain => 'idp.com',
|
||||
|
@ -314,8 +313,7 @@ ywIDAQAB
|
|||
}
|
||||
|
||||
sub sp {
|
||||
return LLNG::Manager::Test->new(
|
||||
{
|
||||
return LLNG::Manager::Test->new( {
|
||||
ini => {
|
||||
logLevel => $debug,
|
||||
domain => 'sp.com',
|
||||
|
|
|
@ -183,8 +183,7 @@ sub switch {
|
|||
}
|
||||
|
||||
sub issuer {
|
||||
return LLNG::Manager::Test->new(
|
||||
{
|
||||
return LLNG::Manager::Test->new( {
|
||||
ini => {
|
||||
logLevel => $debug,
|
||||
templatesDir => 'site/htdocs/static',
|
||||
|
@ -302,8 +301,7 @@ ywIDAQAB
|
|||
}
|
||||
|
||||
sub sp {
|
||||
return LLNG::Manager::Test->new(
|
||||
{
|
||||
return LLNG::Manager::Test->new( {
|
||||
ini => {
|
||||
logLevel => $debug,
|
||||
domain => 'sp.com',
|
||||
|
|
|
@ -205,8 +205,7 @@ sub switch {
|
|||
}
|
||||
|
||||
sub issuer {
|
||||
return LLNG::Manager::Test->new(
|
||||
{
|
||||
return LLNG::Manager::Test->new( {
|
||||
ini => {
|
||||
logLevel => $debug,
|
||||
domain => 'idp.com',
|
||||
|
@ -322,8 +321,7 @@ ywIDAQAB
|
|||
}
|
||||
|
||||
sub sp {
|
||||
return LLNG::Manager::Test->new(
|
||||
{
|
||||
return LLNG::Manager::Test->new( {
|
||||
ini => {
|
||||
logLevel => $debug,
|
||||
domain => 'sp.com',
|
||||
|
|
|
@ -43,8 +43,7 @@ SKIP: {
|
|||
|
||||
use_ok('Lemonldap::NG::Portal::CDC');
|
||||
ok(
|
||||
$cdc = LLNG::Manager::Test->new(
|
||||
{
|
||||
$cdc = LLNG::Manager::Test->new( {
|
||||
ini => {
|
||||
logLevel => 'error',
|
||||
samlCommonDomainCookieDomain => 'cdc.com',
|
||||
|
@ -227,8 +226,7 @@ sub switch {
|
|||
}
|
||||
|
||||
sub issuer {
|
||||
return LLNG::Manager::Test->new(
|
||||
{
|
||||
return LLNG::Manager::Test->new( {
|
||||
ini => {
|
||||
logLevel => $debug,
|
||||
domain => 'idp.com',
|
||||
|
@ -349,8 +347,7 @@ ywIDAQAB
|
|||
}
|
||||
|
||||
sub sp {
|
||||
return LLNG::Manager::Test->new(
|
||||
{
|
||||
return LLNG::Manager::Test->new( {
|
||||
ini => {
|
||||
logLevel => $debug,
|
||||
domain => 'sp.com',
|
||||
|
|
|
@ -200,8 +200,7 @@ sub switch {
|
|||
}
|
||||
|
||||
sub issuer {
|
||||
return LLNG::Manager::Test->new(
|
||||
{
|
||||
return LLNG::Manager::Test->new( {
|
||||
ini => {
|
||||
logLevel => $debug,
|
||||
domain => 'idp.com',
|
||||
|
@ -319,8 +318,7 @@ ywIDAQAB
|
|||
|
||||
sub sp {
|
||||
my $xml = samlIDPMetaDataXML( 'idp', 'HTTP-POST' );
|
||||
return LLNG::Manager::Test->new(
|
||||
{
|
||||
return LLNG::Manager::Test->new( {
|
||||
ini => {
|
||||
logLevel => $debug,
|
||||
domain => 'sp.com',
|
||||
|
|
|
@ -183,8 +183,7 @@ sub switch {
|
|||
}
|
||||
|
||||
sub issuer {
|
||||
return LLNG::Manager::Test->new(
|
||||
{
|
||||
return LLNG::Manager::Test->new( {
|
||||
ini => {
|
||||
logLevel => $debug,
|
||||
domain => 'idp.com',
|
||||
|
@ -313,8 +312,7 @@ ywIDAQAB
|
|||
}
|
||||
|
||||
sub sp {
|
||||
return LLNG::Manager::Test->new(
|
||||
{
|
||||
return LLNG::Manager::Test->new( {
|
||||
ini => {
|
||||
logLevel => $debug,
|
||||
domain => 'sp.com',
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue