Compare commits

..

25 Commits

Author SHA1 Message Date
af39fe81b7 Merge branch 'master' into dist/eole/2.8.1/master 2020-12-11 09:26:12 +01:00
a06bb6a5cf Merge branch 'master' into dist/eole/2.8.1/master 2020-12-09 17:18:06 +01:00
9e9077f133 Adding missing perl lib deps 2020-12-09 17:04:10 +01:00
ea596e640f Adding missing libnet-ldap-perl dep 2020-12-09 16:57:43 +01:00
c886791103 Merge branch 'master' into dist/eole/2.8.1/master 2020-12-09 16:49:20 +01:00
5982b59a1b Merge branch 'master' into dist/eole/2.8.1/master 2020-12-07 16:07:56 +01:00
41728043ed Merge branch 'dist/eole/2.8.0/master' into dist/eole/2.8.1/master 2020-12-07 11:19:35 +01:00
e5afd4ccff Adding missing dep for smtp auth support
ref #31346
2020-12-07 11:18:42 +01:00
61a0b1f79b Merge branch 'master' into dist/eole/2.8.1/master 2020-12-03 16:52:46 +01:00
34239e8ce5 Merge branch '2.8.0/master' into dist/eole/2.8.0/master 2020-12-03 16:51:40 +01:00
ad8e4a69a9 Merge branch '2.8.0/master' into dist/eole/2.8.0/master 2020-12-02 10:20:52 +01:00
9de4ea6dde Merge branch 'master' into dist/eole/2.8.1/master 2020-11-16 15:47:10 +01:00
5c7a9f9894 Merge branch '2.8.0/master' into dist/eole/2.8.0/master 2020-11-16 15:45:55 +01:00
6ee3589185 Merge branch 'master' into dist/eole/2.8.1/master 2020-10-16 09:52:41 +02:00
8d3f12de72 Merge branch '2.8.0/master' into dist/eole/2.8.0/master 2020-10-16 09:51:42 +02:00
24f985d642 Merge branch 'master' into dist/eole/2.8.1/master 2020-10-15 09:34:53 +02:00
c7d4949fb7 Merge branch 'master' into dist/eole/2.8.0/master 2020-10-15 09:10:44 +02:00
6890500d5b Merge branch 'master' into dist/eole/2.8.0/master 2020-10-14 15:55:00 +02:00
2355b20c7d Merge branch 'master' into dist/eole/2.8.0/master 2020-10-14 15:47:17 +02:00
2ac6c9158f Clean garbage file
Ref: #30852
2020-10-14 15:08:57 +02:00
c9c23aaa69 Copyright on the good project
Ref: #30852
2020-10-14 15:08:32 +02:00
26ddf79a97 Scribe requires the libapache2-mod-perl2
Ref: #30852
2020-10-14 14:36:22 +02:00
11c83c8d92 Wrong dependency on the -pkg
Ref: #30852
2020-10-14 14:18:03 +02:00
dd242a3c5a Package for EOLE builders
Build 3 packages:

- eole-lemonldap-ng: the base dictionary, templates and scripts

- eole-lemonldap-ng-scribe: for running LemLDAP::NG on Scribe

- eole-lemonldap-ng-pkg: for package dependencies

Ref: #30852
2020-10-14 14:05:51 +02:00
bd8403b610 Merge branch 'master' into dist/eole/2.8.0/master 2020-10-14 13:54:16 +02:00
16 changed files with 56 additions and 635 deletions

View File

@ -3,9 +3,9 @@
################################ ################################
SOURCE=eole-lemonldap SOURCE=eole-lemonldap
VERSION=0.1 VERSION=2.8
EOLE_VERSION=2.7 EOLE_VERSION=2.8
EOLE_RELEASE=2.7.2 EOLE_RELEASE=2.8.1
PKGAPPS=non PKGAPPS=non
#FLASK_MODULE=<APPLICATION> #FLASK_MODULE=<APPLICATION>

View File

@ -31,7 +31,7 @@ def getSSOFilters():
""" Convert former eole-sso filters to LemonLDAP filters """ Convert former eole-sso filters to LemonLDAP filters
""" """
import glob import glob
from ConfigParser import ConfigParser from configparser import ConfigParser
try: try:
filters = { 'uid': "uid", "mail": "mail" } filters = { 'uid': "uid", "mail": "mail" }

1
debian/compat vendored
View File

@ -1 +0,0 @@
10

16
debian/control vendored
View File

@ -1,16 +1,16 @@
Source: eole-lemonldap Source: eole-lemonldap-ng
Section: web Section: web
Priority: optional Priority: optional
Maintainer: Équipe EOLE <eole@ac-dijon.fr> Maintainer: Équipe EOLE <eole@ac-dijon.fr>
Build-Depends: debhelper (>= 9) Build-Depends: debhelper-compat (= 12)
Standards-Version: 3.9.3 Standards-Version: 4.5.0
Homepage: https://dev-eole.ac-dijon.fr/projects/sso Homepage: https://dev-eole.ac-dijon.fr/projects/sso
Vcs-Git: https://dev-eole.ac-dijon.fr/git/eole-lemonldap-ng.git Vcs-Git: https://dev-eole.ac-dijon.fr/git/eole-lemonldap-ng.git
Vcs-Browser: https://dev-eole.ac-dijon.fr/projects/sso/repository Vcs-Browser: https://dev-eole.ac-dijon.fr/projects/sso/repository
Package: eole-lemonldap Package: eole-lemonldap-ng
Architecture: all Architecture: all
Depends: eole-lemonldap-pkg, Depends: eole-lemonldap-ng-pkg,
${misc:Depends} ${misc:Depends}
Description: Dictionnaires et templates pour la configuration d'un serveur LemonLDAP::NG Description: Dictionnaires et templates pour la configuration d'un serveur LemonLDAP::NG
Pour toute information complémentaire, veuillez vous rendre sur le Pour toute information complémentaire, veuillez vous rendre sur le
@ -19,7 +19,7 @@ Description: Dictionnaires et templates pour la configuration d'un serveur Lemon
Package: eole-lemonldap-ng-scribe Package: eole-lemonldap-ng-scribe
Architecture: all Architecture: all
Depends: eole-scribe, Depends: eole-scribe,
eole-lemonldap, eole-lemonldap-ng,
libapache2-mod-perl2, libapache2-mod-perl2,
${misc:Depends} ${misc:Depends}
Description: Dictionnaire pour calculer les valeurs automatiquement sur Scribe Description: Dictionnaire pour calculer les valeurs automatiquement sur Scribe
@ -27,7 +27,7 @@ Description: Dictionnaire pour calculer les valeurs automatiquement sur Scribe
Pour toute information complémentaire, veuillez vous rendre sur le Pour toute information complémentaire, veuillez vous rendre sur le
site du projet EOLE. site du projet EOLE.
Package: eole-lemonldap-pkg Package: eole-lemonldap-ng-pkg
Architecture: all Architecture: all
Section: metapackages Section: metapackages
Depends: lemonldap-ng, Depends: lemonldap-ng,
@ -44,11 +44,9 @@ Depends: lemonldap-ng,
libimage-magick-perl, libimage-magick-perl,
libio-string-perl, libio-string-perl,
liblasso-perl, liblasso-perl,
libmouse-perl,
libnet-ldap-perl, libnet-ldap-perl,
libunicode-string-perl, libunicode-string-perl,
libmime-tools-perl, libmime-tools-perl,
libio-socket-timeout-perl,
libnet-openid-server-perl, libnet-openid-server-perl,
${misc:Depends} ${misc:Depends}
Description: Paquet de dépendances pour eole-lemonldap. Description: Paquet de dépendances pour eole-lemonldap.

4
debian/copyright vendored
View File

@ -1,6 +1,6 @@
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: {PROJECT} Upstream-Name: eole-lemonldap-ng
Source: ${URL} Source: http://dev-eole.ac-dijon.fr/projects/sso
Files: * Files: *
Copyright: 2020 Équipe EOLE <eole@ac-dijon.fr> Copyright: 2020 Équipe EOLE <eole@ac-dijon.fr>

4
debian/rules vendored
View File

@ -2,8 +2,8 @@
# -*- makefile -*- # -*- makefile -*-
# Uncomment this to turn on verbose mode. # Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1 export DH_VERBOSE=1
#export DH_OPTIONS=-v export DH_OPTIONS=-v
%: %:
dh $@ dh $@

Binary file not shown.

View File

@ -160,12 +160,11 @@
<check name="valid_enum" target="llRegisterDB"> <check name="valid_enum" target="llRegisterDB">
<param>['LDAP','AD','Demo','Custom']</param> <param>['LDAP','AD','Demo','Custom']</param>
</check> </check>
<group master="casAttribute"> <group master="casAttribute">
<slave>casLDAPAttribute</slave> <slave>casLDAPAttribute</slave>
</group> </group>
<condition name='disabled_if_not_in' source='lemon_user_db'> <condition name='enabled_if_in' source='lemon_user_db'>
<param>AD</param> <param>AD</param>
<target type='variable'>llADPasswordMaxAge</target> <target type='variable'>llADPasswordMaxAge</target>
<target type='variable'>llADPasswordExpireWarn</target> <target type='variable'>llADPasswordExpireWarn</target>

View File

@ -24,6 +24,9 @@
<target type='variable'>activer_sso</target> <target type='variable'>activer_sso</target>
</condition> </condition>
<auto name='calc_val' target='ldapScheme'>
<param>ldaps</param>
</auto>
<fill name='calc_val_first_value' target='eolesso_adresse'> <fill name='calc_val_first_value' target='eolesso_adresse'>
<param type='eole' optional='True' hidden='False'>authWebName</param> <param type='eole' optional='True' hidden='False'>authWebName</param>
@ -31,42 +34,37 @@
<param type='eole'>nom_domaine_machine</param> <param type='eole'>nom_domaine_machine</param>
</fill> </fill>
<auto name='calc_val' target='ldap_port'>
<param>636</param>
</auto>
<condition name='frozen_if_in' source='activerLemon'> <condition name='frozen_if_in' source='activerLemon'>
<param>oui</param> <param>oui</param>
<target type='variable'>eolesso_adresse</target> <target type='variable'>eolesso_adresse</target>
</condition> </condition>
<auto name='calc_multi_condition' target='ldapScheme'>
<param>oui</param>
<param type='eole' name='condition_1'>ldap_tls</param>
<param name='match'>ldaps</param>
<param name='default_mismatch'>ldap</param>
</auto>
<auto name='calc_val' target='ldapServer'> <auto name='calc_val' target='ldapServer'>
<param type='eole'>adresse_ip_ldap</param> <param type='eole'>ad_address</param>
</auto> </auto>
<auto name='calc_val' target='ldapServerPort'> <auto name='calc_val' target='ldapServerPort'>
<param type='eole'>ldap_port</param> <param type='number'>636</param>
</auto> </auto>
<auto name='calc_val' target='lemon_user_db'> <auto name='calc_val' target='lemon_user_db'>
<param>LDAP</param> <param>AD</param>
</auto> </auto>
<auto name='calc_val' target='llRegisterDB'> <auto name='calc_val' target='llRegisterDB'>
<param>LDAP</param> <param>AD</param>
</auto>
<auto name='calc_val' target='ldapUserBaseDN'>
<param type='eole'>ldap_base_dn</param>
</auto> </auto>
<auto name='calc_val' target='ldapBindUserDN'> <auto name='calc_val' target='ldapBindUserDN'>
<param type='eole'>ldap_reader</param> <param type='eole'>sasl_ldap_reader</param>
</auto> </auto>
<auto name='calc_val' target='ldapBindUserPassword'> <auto name='calc_val' target='ldapBindUserPassword'>
<param type='eole'>ldap_reader_passfile</param> <param>/etc/eole/private/sasl-reader.password</param>
</auto> </auto>
<auto name='calc_val' target='casFolder'> <auto name='calc_val' target='casFolder'>

View File

@ -1,2 +1 @@
creolefuncs_DATA_DIR := $(DESTDIR)/usr/share/creole/funcs creolefuncs_DATA_DIR := $(DESTDIR)/usr/share/creole/funcs
lemonldap-ng_DATA_DIR := $(eole_DIR)/lemonldap-ng

View File

@ -1,102 +0,0 @@
package Lemonldap::NG::Portal::UserDB::LDAP;
use strict;
use Mouse;
use utf8;
use Lemonldap::NG::Portal::Main::Constants qw(PE_OK);
extends 'Lemonldap::NG::Portal::Lib::LDAP';
our $VERSION = '2.0.6';
has ldapGroupAttributeNameSearch => (
is => 'rw',
lazy => 1,
builder => sub {
my $attributes = [];
@$attributes =
split( /\s+/, $_[0]->{conf}->{ldapGroupAttributeNameSearch} )
if $_[0]->{conf}->{ldapGroupAttributeNameSearch};
push( @$attributes, $_[0]->{conf}->{ldapGroupAttributeNameGroup} )
if ( $_[0]->{conf}->{ldapGroupRecursive}
and $_[0]->{conf}->{ldapGroupAttributeNameGroup} ne "dn" );
return $attributes;
}
);
# RUNNING METHODS
#
# getUser is provided by Portal::Lib::LDAP
# Load all parameters included in exportedVars parameter.
# Multi-value parameters are loaded in a single string with
# a separator (param multiValuesSeparator)
# @return Lemonldap::NG::Portal constant
sub setSessionInfo {
my ( $self, $req ) = @_;
$req->{sessionInfo}->{_dn} = $req->data->{dn};
my %vars = ( %{ $self->conf->{exportedVars} },
%{ $self->conf->{ldapExportedVars} } );
while ( my ( $k, $v ) = each %vars ) {
# getLdapValue returns an empty string for missing attribute
# but we really want to return undef so they don't get stored in session
$req->sessionInfo->{$k} =
$self->ldap->getLdapValue( $req->data->{ldapentry}, $v ) || undef;
}
PE_OK;
}
# Load all groups in $groups.
# @return Lemonldap::NG::Portal constant
sub setGroups {
my ( $self, $req ) = @_;
my $groups = $req->{sessionInfo}->{groups};
my $hGroups = $req->{sessionInfo}->{hGroups};
if ( $self->conf->{ldapGroupBase} ) {
# Get value for group search
my $group_value = $self->ldap->getLdapValue( $req->data->{ldapentry},
$self->conf->{ldapGroupAttributeNameUser} );
if ( $self->conf->{ldapGroupDecodeSearchedValue} ) {
utf8::decode($group_value);
}
$self->logger->debug( "Searching LDAP groups in "
. $self->conf->{ldapGroupBase}
. " for $group_value" );
# Call searchGroups
my $ldapGroups = $self->ldap->searchGroups(
$self->conf->{ldapGroupBase},
$self->conf->{ldapGroupAttributeName},
$group_value,
$self->ldapGroupAttributeNameSearch,
$req->{ldapGroupDuplicateCheck}
);
foreach ( keys %$ldapGroups ) {
my $groupName = $_;
$hGroups->{$groupName} = $ldapGroups->{$groupName};
my $groupValues = [];
foreach ( @{ $self->ldapGroupAttributeNameSearch } ) {
next if $_ =~ /^name$/;
my $firstValue = $ldapGroups->{$groupName}->{$_}->[0];
push @$groupValues, $firstValue;
}
$groups .= $self->conf->{multiValuesSeparator} if $groups;
$groups .= join( '|', @$groupValues );
}
}
$req->{sessionInfo}->{groups} = $groups;
$req->{sessionInfo}->{hGroups} = $hGroups;
PE_OK;
}
1;

View File

@ -1,20 +0,0 @@
--- /usr/share/perl5/Lemonldap/NG/Portal/UserDB/LDAP.pm.old 2019-12-11 12:05:54.000000000 +0100
+++ /usr/share/perl5/Lemonldap/NG/Portal/UserDB/LDAP.pm 2021-01-05 10:54:19.188732119 +0100
@@ -40,10 +40,15 @@
%{ $self->conf->{ldapExportedVars} } );
while ( my ( $k, $v ) = each %vars ) {
+ my $value = $self->ldap->getLdapValue( $req->data->{ldapentry}, $v );
+
# getLdapValue returns an empty string for missing attribute
# but we really want to return undef so they don't get stored in session
- $req->sessionInfo->{$k} =
- $self->ldap->getLdapValue( $req->data->{ldapentry}, $v ) || undef;
+ # This has to be a string comparison because "0" is a valid attribute
+ # value. See #2403
+ $value = undef if ( $value eq "" );
+
+ $req->sessionInfo->{$k} = $value;
}
PE_OK;

View File

@ -1,12 +0,0 @@
#!/bin/bash
# vérifie si le patch est déjà appliqué
grep -q 2403 /usr/share/perl5/Lemonldap/NG/Portal/UserDB/LDAP.pm && exit 0
# copie de sauvegarde
cp -a /usr/share/perl5/Lemonldap/NG/Portal/UserDB/LDAP.pm /usr/share/eole/lemonldap-ng/
# application du patch
patch -d / -p 0 < /usr/share/eole/lemonldap-ng/LDAP.pm.patch
exit 0

View File

@ -1,443 +0,0 @@
%set %%ssoFilters = %%getSSOFilters
{
"ldapGroupAttributeNameUser": "dn",
"cfgAuthorIP": "172.16.0.1",
"samlSPMetaDataXML": null,
"facebookAuthnLevel": 1,
"mailConfirmSubject": "[LemonLDAP::NG] Password reset confirmation",
"secureTokenAttribute": "uid",
"singleSession": 0,
"registerConfirmSubject": "[LemonLDAP::NG] Account register confirmation",
"CAS_pgtFile": "/tmp/pgt.txt",
"cookieName": "lemonldap",
"slaveExportedVars": {},
"whatToTrace": "_whatToTrace",
"oidcRPMetaDataOptions": {},
"notifyDeleted": 1,
"useRedirectOnError": 1,
"samlSPMetaDataExportedAttributes": null,
"ldapPwdEnc": "utf-8",
"openIdSPList": "0;",
"samlNameIDFormatMapEmail": "mail",
"samlSPMetaDataOptions": null,
"issuerDBOpenIDRule": 1,
"casStorageOptions": {},
"mailFrom": "noreply@%%nom_domaine_local",
"timeoutActivity": 0,
"oidcRPMetaDataExportedVars": {},
"issuerDBSAMLActivation": 0,
"issuerDBCASPath": "^/%%casFolder/",
"randomPasswordRegexp": "[A-Z]{3}[a-z]{5}.\\d{2}",
"samlIDPSSODescriptorSingleSignOnServiceSOAP": "urn:oasis:names:tc:SAML:2.0:bindings:SOAP;#PORTAL#/saml/singleSignOnSOAP;",
"samlSPSSODescriptorSingleLogoutServiceHTTPPost": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST;#PORTAL#/saml/proxySingleLogout;#PORTAL#/saml/proxySingleLogoutReturn",
"exportedHeaders": {
"test1.%%nom_domaine_local": {
"Auth-User": "$uid"
},
"test2.%%nom_domaine_local": {
"Auth-User": "$uid"
},
"%%managerWebName": {}
},
"vhostOptions": {
"%%managerWebName": {
"vhostHttps" : "1"
},
"test1.%%nom_domaine_local": {},
"test2.%%nom_domaine_local": {}
},
"radiusAuthnLevel": 3,
"dbiAuthnLevel": 2,
"ldapPasswordResetAttribute": "pwdReset",
"ldapGroupObjectClass": "groupOfNames",
"apacheAuthnLevel": 4,
"samlNameIDFormatMapKerberos": "uid",
"groups": {},
"securedCookie": 0,
"httpOnly": 1,
"yubikeyAuthnLevel": 3,
"ADPwdMaxAge": 0,
"samlUseQueryStringSpecific": 0,
"loginHistoryEnabled": 1,
"samlSPSSODescriptorSingleLogoutServiceSOAP": "urn:oasis:names:tc:SAML:2.0:bindings:SOAP;#PORTAL#/saml/proxySingleLogoutSOAP;",
"failedLoginNumber": 5,
"samlServicePrivateKeyEncPwd": "",
"portalForceAuthnInterval": 0,
"cfgLog": "",
"samlIDPSSODescriptorSingleLogoutServiceHTTPRedirect": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect;#PORTAL#/saml/singleLogout;#PORTAL#/saml/singleLogoutReturn",
"exportedVars": {
"UA": "HTTP_USER_AGENT",
%for att in %%casAttribute
"%%att": "%%att",
%end for
%set %%idx = 0
%set %%size = %%len(%%ssoFilters) - 1
%for key,value in %%ssoFilters
%if %%idx == %%size
"%%key": "%%value"
%else
"%%key": "%%value",
%end if
%set %%idx += 1
%end for
},
"notificationStorage": "File",
"applicationList": {
"1sample": {
"test2": {
"options": {
"name": "Application Test 2",
"logo": "thumbnail.png",
"uri": "https://test2.%%nom_domaine_local/",
"display": "auto",
"description": "The same simple application displaying authenticated user"
},
"type": "application"
},
"type": "category",
"catname": "Sample applications",
"test1": {
"type": "application",
"options": {
"description": "A simple application displaying authenticated user",
"uri": "https://test1.%%nom_domaine_local/",
"logo": "demo.png",
"display": "auto",
"name": "Application Test 1"
}
}
},
"2administration": {
"notifications": {
"options": {
"name": "Notifications explorer",
"display": "auto",
"description": "Explore WebSSO notifications",
"uri": "https://%%managerWebName/notifications.pl",
"logo": "database.png"
},
"type": "application"
},
"manager": {
"options": {
"uri": "https://%%managerWebName/",
"display": "auto",
"description": "Configure LemonLDAP::NG WebSSO",
"logo": "configure.png",
"name": "WebSSO Manager"
},
"type": "application"
},
"type": "category",
"sessions": {
"type": "application",
"options": {
"description": "Explore WebSSO sessions",
"uri": "https://%%managerWebName/sessions.pl",
"logo": "database.png",
"display": "auto",
"name": "Sessions explorer"
}
},
"catname": "Administration"
},
"3documentation": {
"catname": "Documentation",
"officialwebsite": {
"type": "application",
"options": {
"name": "Offical Website",
"description": "Official LemonLDAP::NG Website",
"logo": "network.png",
"display": "on",
"uri": "http://lemonldap-ng.org/"
}
},
"type": "category",
"localdoc": {
"options": {
"logo": "help.png",
"description": "Documentation supplied with LemonLDAP::NG",
"display": "on",
"uri": "https://%%managerWebName/doc/",
"name": "Local documentation"
},
"type": "application"
}
}
},
"userControl": "^[\\w\\.\\-@]+$",
"timeout": 72000,
"portalAntiFrame": 1,
"SMTPServer": "",
"ldapTimeout": 120,
"samlAuthnContextMapPasswordProtectedTransport": 3,
"ldapUsePasswordResetAttribute": 1,
"ldapPpolicyControl": 0,
"casAttributes": {
%for att in %%casAttribute
"%%att": "%%att.casLDAPAttribute",
%end for
%set %%idx = 0
%set %%size = %%len(%%ssoFilters) - 1
%for key,value in %%ssoFilters
%if %%idx == %%size
"%%key": "%%key"
%else
"%%key": "%%key",
%end if
%set %%idx += 1
%end for
},
"issuerDBSAMLPath": "^/saml/",
"samlAttributeAuthorityDescriptorAttributeServiceSOAP": "urn:oasis:names:tc:SAML:2.0:bindings:SOAP;#PORTAL#/saml/AA/SOAP;",
"portalDisplayAppslist": 1,
"confirmFormMethod": "post",
"domain": "%%nom_domaine_local",
"cfgNum": "1",
"authentication": "LDAP",
"samlNameIDFormatMapWindows": "uid",
"authChoiceModules": {},
"ldapGroupAttributeName": "member",
"samlServicePrivateKeySigPwd": "",
"googleAuthnLevel": 1,
"successLoginNumber": 5,
"localSessionStorageOptions": {
"cache_root": "/tmp",
"namespace": "lemonldap-ng-sessions",
"default_expires_in": 600,
"directory_umask": "007",
"cache_depth": 3
},
"samlSPSSODescriptorArtifactResolutionServiceArtifact": "1;0;urn:oasis:names:tc:SAML:2.0:bindings:SOAP;#PORTAL#/saml/artifact",
"portalRequireOldPassword": 1,
"samlIDPSSODescriptorSingleSignOnServiceHTTPArtifact": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact;#PORTAL#/saml/singleSignOnArtifact;",
"ADPwdExpireWarning": 0,
"yubikeyPublicIDSize": 12,
"ldapGroupAttributeNameGroup": "dn",
"oidcRPMetaDataOptionsExtraClaims": null,
"ldapGroupRecursive": 0,
"mailSubject": "[LemonLDAP::NG] Your new password",
"nginxCustomHandlers": {},
"samlSPSSODescriptorAuthnRequestsSigned": 1,
%if %%llResetPassword == "oui"
"portalDisplayResetPassword": 1,
%else
"portalDisplayResetPassword": 0,
%end if
"openIdSreg_timezone": "_timezone",
"infoFormMethod": "get",
"openIdAuthnLevel": 1,
"openIdSreg_nickname": "uid",
"samlServicePublicKeyEnc": "",
"userDB": "LDAP",
"grantSessionRules": {},
"remoteGlobalStorage": "Lemonldap::NG::Common::Apache::Session::SOAP",
"reloadUrls": {
"%%reloadWebName": "https://%%reloadWebName/reload"
},
"registerTimeout": 0,
"samlIDPSSODescriptorSingleSignOnServiceHTTPPost": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST;#PORTAL#/saml/singleSignOn;",
"slaveAuthnLevel": 2,
"samlIDPSSODescriptorSingleLogoutServiceHTTPPost": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST;#PORTAL#/saml/singleLogout;#PORTAL#/saml/singleLogoutReturn",
"Soap": 1,
%set %%RegisterDB=%%getVar('llRegisterDB', 'Demo')
%if %%RegisterDB == "Custom"
"registerDB": "Null",
%else
"registerDB": "%%RegisterDB",
%end if
"locationRules": {
"%%managerWebName": {
"default": "$uid eq \"%%lemonAdmin\""
},
"test1.%%nom_domaine_local": {
"default": "accept",
"^/logout": "logout_sso"
},
"test2.%%nom_domaine_local": {
"default": "accept",
"^/logout": "logout_sso"
}
},
"portalDisplayChangePassword": "$_auth =~ /^(LDAP|DBI|Demo)$/",
"hideOldPassword": 0,
%if %%is_file(%%ldapBindUserPassword)
"managerPassword": "%%readPass("", %%ldapBindUserPassword)",
%else
"managerPassword": "%%ldapBindUserPassword",
%end if
"authChoiceParam": "lmAuth",
"lwpSslOpts": {},
"portalSkinRules": {},
"issuerDBOpenIDPath": "^/openidserver/",
"redirectFormMethod": "get",
"portalDisplayRegister": 1,
"secureTokenMemcachedServers": "127.0.0.1:11211",
"notificationStorageOptions": {
"dirName": "/var/lib/lemonldap-ng/notifications"
},
"browserIdAuthnLevel": 1,
"portalUserAttr": "_user",
"ldapVersion": 3,
"sessionDataToRemember": {},
"samlNameIDFormatMapX509": "mail",
"managerDn": "%%ldapBindUserDN",
"mailSessionKey": "mail",
"openIdSreg_email": "mail",
"localSessionStorage": "Cache::FileCache",
"persistentStorage": "Apache::Session::File",
"mailOnPasswordChange": 0,
"captchaStorage": "Apache::Session::File",
"remoteGlobalStorageOptions": {
"proxy": "https://%%authWebName/index.pl/sessions",
"ns": "https://%%authWebName/Lemonldap/NG/Common/CGI/SOAPService"
},
"passwordDB": "LDAP",
"captcha_size": 6,
"mailCharset": "utf-8",
"facebookExportedVars": {},
"nullAuthnLevel": 2,
"singleIP": 0,
"dbiExportedVars": {},
"portalSkin": "bootstrap",
"storePassword": 0,
"hiddenAttributes": "_password",
"samlServicePrivateKeySig": "",
"globalStorage": "Apache::Session::File",
"notificationWildcard": "allusers",
"portalForceAuthn": 0,
"samlMetadataForceUTF8": 1,
"secureTokenUrls": ".*",
"secureTokenAllowOnError": 1,
"samlAuthnContextMapTLSClient": 5,
"ldapAllowResetExpiredPassword": 0,
"oidcOPMetaDataExportedVars": {},
"notifyOther": 0,
"secureTokenExpiration": 60,
"captcha_mail_enabled": 0,
"samlStorageOptions": {},
"samlOrganizationDisplayName": "Example",
"trustedProxies": "",
"secureTokenHeader": "Auth-Token",
"issuerDBCASActivation": 1,
"samlIDPSSODescriptorSingleSignOnServiceHTTPRedirect": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect;#PORTAL#/saml/singleSignOn;",
"samlSPSSODescriptorSingleLogoutServiceHTTPRedirect": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect;#PORTAL#/saml/proxySingleLogout;#PORTAL#/saml/proxySingleLogoutReturn",
"samlIDPMetaDataXML": {},
"oidcStorageOptions": {},
"cfgDate": 1519998069,
"samlAuthnContextMapPassword": 2,
"portalDisplayLoginHistory": 1,
"ldapPasswordResetAttributeValue": "TRUE",
"ldapServer": "%%ldapScheme://%%ldapServer",
"samlIDPSSODescriptorSingleLogoutServiceSOAP": "urn:oasis:names:tc:SAML:2.0:bindings:SOAP;#PORTAL#/saml/singleLogoutSOAP;",
"samlIDPMetaDataExportedAttributes": null,
"samlServicePrivateKeyEnc": "",
"useRedirectOnForbidden": 0,
"captcha_login_enabled": 0,
"https": 0,
"checkXSS": 1,
"ldapSetPassword": 0,
"portalPingInterval": 60000,
"captchaStorageOptions": {
"Directory": "/var/lib/lemonldap-ng/captcha/"
},
"useSafeJail": 1,
"registerDoneSubject": "[LemonLDAP::NG] Your new account",
"issuerDBCASRule": 1,
"samlAuthnContextMapKerberos": 4,
"ldapGroupAttributeNameSearch": "cn",
"logoutServices": {},
"samlIDPSSODescriptorWantAuthnRequestsSigned": 1,
"portalDisplayLogout": 1,
"issuerDBGetParameters": {},
"googleExportedVars": {},
"openIdSreg_fullname": "cn",
"samlSPSSODescriptorAssertionConsumerServiceHTTPArtifact": "1;0;urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact;#PORTAL#/saml/proxySingleSignOnArtifact",
"demoExportedVars": {
"mail": "mail",
"uid": "uid",
"cn": "cn"
},
"oidcOPMetaDataJSON": null,
"samlIdPResolveCookie": "lemonldapidp",
"samlRelayStateTimeout": 600,
"samlOrganizationURL": "https://auth.%%nom_domaine_local",
"globalStorageOptions": {
"Directory": "/var/lib/lemonldap-ng/sessions",
"LockDirectory": "/var/lib/lemonldap-ng/sessions/lock"
},
"ldapExportedVars": {
"mail": "mail",
"cn": "cn",
"uid": "uid"
},
"webIDExportedVars": {},
"activeTimer": 1,
"cda": 0,
"samlServicePublicKeySig": "",
%if %%llCheckLogins == "oui"
"portalCheckLogins": 1,
%else
"portalCheckLogins": 0,
%end if
"CAS_authnLevel": 1,
"macros": {
"_whatToTrace": "$_auth eq 'SAML' ? \"$_user\\@$_idpConfKey\" : \"$_user\""
},
"samlIDPMetaDataOptions": null,
"twitterAuthnLevel": 1,
"openIdExportedVars": {},
"captcha_register_enabled": 1,
"oidcOPMetaDataJWKS": null,
"webIDAuthnLevel": 1,
"issuerDBOpenIDActivation": "1",
%if %%llResetPassword == "oui"
%if %%is_empty(%%llResetUrl)
"mailUrl": "https://%%authWebName/mail.pl",
%else
"mailUrl": "%%llResetUrl",
%end if
%end if
"maintenance": 0,
"jsRedirect": 0,
"cfgAuthor": "Cadoles",
"persistentStorageOptions": {
"LockDirectory": "/var/lib/lemonldap-ng/psessions/lock",
"Directory": "/var/lib/lemonldap-ng/psessions"
},
"SSLAuthnLevel": 5,
"oidcServiceMetaDataAuthnContext": {},
"samlIDPSSODescriptorArtifactResolutionServiceArtifact": "1;0;urn:oasis:names:tc:SAML:2.0:bindings:SOAP;#PORTAL#/saml/artifact",
"notification": 1,
"ldapChangePasswordAsUser": 0,
"CAS_proxiedServices": {},
"key": "e\"bTCt3*eU9^\\V%b",
"portal": "https://%%authWebName/",
"singleSessionUserByIP": 0,
"portalOpenLinkInNewWindow": 0,
"post": {
"test2.%%nom_domaine_local": {},
"test1.%%nom_domaine_local": {},
"%%managerWebName": {}
},
"samlSPSSODescriptorAssertionConsumerServiceHTTPPost": "0;1;urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST;#PORTAL#/saml/proxySingleSignOnPost",
"issuerDBSAMLRule": 1,
"samlCommonDomainCookieActivation": 0,
"syslog": "",
"ldapBase": "%%ldapUserBaseDN",
"ldapAuthnLevel": 2,
"mailTimeout": 0,
"samlEntityID": "#PORTAL#/saml/metadata",
"oidcOPMetaDataOptions": null,
"samlSPSSODescriptorWantAssertionsSigned": 1,
"samlOrganizationName": "%%samlOrganizationName",
%if %%RegisterDB == "Custom"
"registerUrl": "%%llRegisterURL",
%else
"registerUrl": "https://%%authWebName/register.pl",
%end if
"casAccessControlPolicy": "none",
"multiValuesSeparator": ";",
"ldapPort": %%ldapServerPort
}

View File

@ -1,25 +1,17 @@
%set %%boolean = {'oui': 1, 'non': 0} %set %%boolean = {'oui': 1, 'non': 0}
%set %%ssoFilters = %%getSSOFilters %set %%ssoFilters = %%getSSOFilters
%set %%ldapAttributes = {"uid": "uid", "mail": "mail", "cn":"cn"}
%set %%exported_vars = ['"UA": "HTTP_USER_AGENT"'] %set %%exported_vars = ['"UA": "HTTP_USER_AGENT"']
%set %%cas_attributes = [] %set %%cas_attributes = []
%set %%ldap_attributes = {}
%for %%attr in %%casAttribute %for %%attr in %%casAttribute
%silent %%exported_vars.append('"' + %%attr + '": "' + %%attr.casLDAPAttribute + '"') %silent %%exported_vars.append('"' + %%attr + '": "' + %%attr + '.casLDAPAttribute"')
%silent %%cas_attributes.append('"' + %%attr + '": "' + %%attr.casLDAPAttribute + '"') %silent %%cas_attributes.append('"' + %%attr + '": "' + %%attr + '.casLDAPAttribute"')
%set %%ldap_attributes[%%attr.casLDAPAttribute] = %%attr.casLDAPAttribute
%end for %end for
%for %%key, %%value in %%ssoFilters %for %%key, %%value in %%ssoFilters
%silent %%exported_vars.append('"' + %%key + '": "' + %%value + '"') %silent %%exported_vars.append('"' + %%key + '": "' + %%value + '"')
%silent %%cas_attributes.append('"' + %%key + '": "' + %%value + '"') %silent %%cas_attributes.append('"' + %%key + '": "' + %%value + '"')
%set %%ldap_attributes[%%value] = %%value
%end for %end for
%silent %%exported_vars.sort() %silent %%exported_vars.sort()
%silent %%cas_attributes.sort() %silent %%cas_attributes.sort()
%set %%ldapAttr = []
%for %%k, %%v in %%ldap_attributes.items()
%silent %%ldapAttr.append('"' + %%k + '": "' + %%v + '"')
%end for
{ {
%if %%lemon_user_db == "AD" %if %%lemon_user_db == "AD"
"ADPwdExpireWarning": %%llADPasswordExpireWarn, "ADPwdExpireWarning": %%llADPasswordExpireWarn,
@ -179,15 +171,31 @@
%end if %end if
"ldapAuthnLevel": 2, "ldapAuthnLevel": 2,
"ldapSearchDeref": "find", "ldapSearchDeref": "find",
%if %%eole_module == "scribe"
"ldapBase": "cn=Users,dc=%echo ",dc=".join(%%ad_domain.split('.')) + '",'
"ldapExportedVars": {
"cn": "cn",
"mail": "mail",
"uid": "cn"
},
"ldapGroupAttributeName": "memberUid",
"ldapGroupAttributeNameGroup": "dn",
"ldapGroupAttributeNameSearch": "cn",
"ldapGroupAttributeNameUser": "cn",
"ldapGroupObjectClass": "group",
%else
"ldapBase": "%%ldapUserBaseDN", "ldapBase": "%%ldapUserBaseDN",
"ldapExportedVars": { "ldapExportedVars": {
%%custom_join(%%ldapAttr, ',\n ') "cn": "cn",
"mail": "mail",
"uid": "uid"
}, },
"ldapGroupAttributeName": "memberUid", "ldapGroupAttributeName": "memberUid",
"ldapGroupAttributeNameGroup": "dn", "ldapGroupAttributeNameGroup": "dn",
"ldapGroupAttributeNameSearch": "cn", "ldapGroupAttributeNameSearch": "cn",
"ldapGroupAttributeNameUser": "uid", "ldapGroupAttributeNameUser": "uid",
"ldapGroupObjectClass": "eolegroupe", "ldapGroupObjectClass": "eolegroupe",
%end if
"ldapGroupRecursive": 0, "ldapGroupRecursive": 0,
"ldapPasswordResetAttribute": "pwdReset", "ldapPasswordResetAttribute": "pwdReset",
"ldapPasswordResetAttributeValue": "TRUE", "ldapPasswordResetAttributeValue": "TRUE",
@ -196,9 +204,9 @@
"ldapServer": "%%ldapScheme://%%ldapServer", "ldapServer": "%%ldapScheme://%%ldapServer",
%if %%ldapScheme == "ldaps" %if %%ldapScheme == "ldaps"
%if %%lmldapverify == "oui" %if %%lmldapverify == "oui"
"ldapVerify": "Require", "ldapVerify": "required",
%else %else
"ldapVerify": "None", "ldapVerify": "none",
%end if %end if
%end if %end if
"ldapSetPassword": 0, "ldapSetPassword": 0,
@ -224,13 +232,6 @@
"macros": { "macros": {
"_whatToTrace": "$_auth eq 'SAML' ? \"$_user\\@$_idpConfKey\" : \"$_user\"" "_whatToTrace": "$_auth eq 'SAML' ? \"$_user\\@$_idpConfKey\" : \"$_user\""
}, },
"samlIDPMetaDataOptions": null,
"twitterAuthnLevel": 1,
"openIdExportedVars": {},
"captcha_register_enabled": 1,
"oidcOPMetaDataJWKS": null,
"webIDAuthnLevel": 1,
"issuerDBOpenIDActivation": "1",
"mailCharset": "utf-8", "mailCharset": "utf-8",
"mailConfirmSubject": "[LemonLDAP::NG] Password reset confirmation", "mailConfirmSubject": "[LemonLDAP::NG] Password reset confirmation",
"mailFrom": "noreply@%%nom_domaine_local", "mailFrom": "noreply@%%nom_domaine_local",
@ -246,7 +247,11 @@
%end if %end if
%end if %end if
"maintenance": 0, "maintenance": 0,
%if %%eole_module == "scribe"
"managerDn": "cn=%%ldapBindUserDN,cn=Users,dc=%echo ",dc=".join(%%ad_domain.split('.')) + '",'
%else
"managerDn": "%%ldapBindUserDN", "managerDn": "%%ldapBindUserDN",
%end if
%if %%is_file(%%ldapBindUserPassword) %if %%is_file(%%ldapBindUserPassword)
"managerPassword": "%%readPass("", %%ldapBindUserPassword)", "managerPassword": "%%readPass("", %%ldapBindUserPassword)",
%else %else
@ -292,7 +297,7 @@
"portalDisplayChangePassword": "$_auth =~ /^(AD|LDAP|DBI|Demo)$/", "portalDisplayChangePassword": "$_auth =~ /^(AD|LDAP|DBI|Demo)$/",
"portalDisplayLoginHistory": 1, "portalDisplayLoginHistory": 1,
"portalDisplayLogout": 1, "portalDisplayLogout": 1,
"portalDisplayRegister": %%boolean[%%llRegisterAccount], "portalDisplayRegister": 1,
"portalDisplayResetPassword": %%boolean[%%llResetPassword], "portalDisplayResetPassword": %%boolean[%%llResetPassword],
"portalForceAuthn": 0, "portalForceAuthn": 0,
"portalForceAuthnInterval": 0, "portalForceAuthnInterval": 0,