Compare commits
9 Commits
pkg/stable
...
master
Author | SHA1 | Date | |
---|---|---|---|
3edf7dd774 | |||
293d940fdc | |||
918ceab882 | |||
adea10270d | |||
6c5beb7e9f | |||
583e77d7c7 | |||
eddc9696c3 | |||
4e8caeda89 | |||
f3b120eb62 |
@ -10,7 +10,7 @@ LemonLDAP::NG EOLE integration
|
|||||||
|
|
||||||
GenConfig -> Mode Expert -> Dépôts tiers -> Libellé du dépôt
|
GenConfig -> Mode Expert -> Dépôts tiers -> Libellé du dépôt
|
||||||
|
|
||||||
#### LemonLDAP::NG repository (if you use EOLE 2.7.2 this is not needed anymore)
|
#### LemonLDAP::NG repository (if you use EOLE 2.8.X this is not needed anymore)
|
||||||
|
|
||||||
* deb https://lemonldap-ng.org/deb stable main
|
* deb https://lemonldap-ng.org/deb stable main
|
||||||
* deb-src https://lemonldap-ng.org/deb stable main
|
* deb-src https://lemonldap-ng.org/deb stable main
|
||||||
|
1
debian/compat
vendored
1
debian/compat
vendored
@ -1 +0,0 @@
|
|||||||
10
|
|
51
debian/control
vendored
51
debian/control
vendored
@ -1,51 +0,0 @@
|
|||||||
Source: eole-lemonldap
|
|
||||||
Section: web
|
|
||||||
Priority: optional
|
|
||||||
Maintainer: Équipe EOLE <eole@ac-dijon.fr>
|
|
||||||
Build-Depends: debhelper (>= 9)
|
|
||||||
Standards-Version: 3.9.3
|
|
||||||
Homepage: https://dev-eole.ac-dijon.fr/projects/sso
|
|
||||||
Vcs-Git: https://dev-eole.ac-dijon.fr/git/eole-lemonldap-ng.git
|
|
||||||
Vcs-Browser: https://dev-eole.ac-dijon.fr/projects/sso/repository
|
|
||||||
|
|
||||||
Package: eole-lemonldap
|
|
||||||
Architecture: all
|
|
||||||
Depends: eole-lemonldap-pkg,
|
|
||||||
${misc:Depends}
|
|
||||||
Description: Dictionnaires et templates pour la configuration d'un serveur LemonLDAP::NG
|
|
||||||
Pour toute information complémentaire, veuillez vous rendre sur le
|
|
||||||
site du projet EOLE.
|
|
||||||
|
|
||||||
Package: eole-lemonldap-ng-scribe
|
|
||||||
Architecture: all
|
|
||||||
Depends: eole-scribe,
|
|
||||||
eole-lemonldap,
|
|
||||||
libapache2-mod-perl2,
|
|
||||||
${misc:Depends}
|
|
||||||
Description: Dictionnaire pour calculer les valeurs automatiquement sur Scribe
|
|
||||||
.
|
|
||||||
Pour toute information complémentaire, veuillez vous rendre sur le
|
|
||||||
site du projet EOLE.
|
|
||||||
|
|
||||||
Package: eole-lemonldap-pkg
|
|
||||||
Architecture: all
|
|
||||||
Section: metapackages
|
|
||||||
Depends: lemonldap-ng,
|
|
||||||
lemonldap-ng-doc,
|
|
||||||
lemonldap-ng-fastcgi-server,
|
|
||||||
lemonldap-ng-handler,
|
|
||||||
liblemonldap-ng-handler-perl,
|
|
||||||
liblemonldap-ng-manager-perl,
|
|
||||||
liblemonldap-ng-portal-perl,
|
|
||||||
libauthen-captcha-perl,
|
|
||||||
libauthen-sasl-perl,
|
|
||||||
libemail-sender-perl,
|
|
||||||
libgd-securityimage-perl,
|
|
||||||
libimage-magick-perl,
|
|
||||||
libio-string-perl,
|
|
||||||
liblasso-perl,
|
|
||||||
libnet-openid-server-perl,
|
|
||||||
${misc:Depends}
|
|
||||||
Description: Paquet de dépendances pour eole-lemonldap.
|
|
||||||
.
|
|
||||||
Pour toute information complémentaire, veuillez vous rendre sur la forge Cadoles.
|
|
37
debian/copyright
vendored
37
debian/copyright
vendored
@ -1,37 +0,0 @@
|
|||||||
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
|
||||||
Upstream-Name: {PROJECT}
|
|
||||||
Source: ${URL}
|
|
||||||
|
|
||||||
Files: *
|
|
||||||
Copyright: 2020 Équipe EOLE <eole@ac-dijon.fr>
|
|
||||||
License: CeCILL-C
|
|
||||||
|
|
||||||
License: CeCILL-C
|
|
||||||
This software is governed by the CeCILL-C license under French law and
|
|
||||||
abiding by the rules of distribution of free software. You can use,
|
|
||||||
modify and or redistribute the software under the terms of the CeCILL-C
|
|
||||||
license as circulated by CEA, CNRS and INRIA at the following URL
|
|
||||||
"http://www.cecill.info";.
|
|
||||||
.
|
|
||||||
As a counterpart to the access to the source code and rights to copy,
|
|
||||||
modify and redistribute granted by the license, users are provided only
|
|
||||||
with a limited warranty and the software's author, the holder of the
|
|
||||||
economic rights, and the successive licensors have only limited
|
|
||||||
liability.
|
|
||||||
.
|
|
||||||
In this respect, the user's attention is drawn to the risks associated
|
|
||||||
with loading, using, modifying and/or developing or reproducing the
|
|
||||||
software by the user in light of its specific status of free software,
|
|
||||||
that may mean that it is complicated to manipulate, and that also
|
|
||||||
therefore means that it is reserved for developers and experienced
|
|
||||||
professionals having in-depth computer knowledge. Users are therefore
|
|
||||||
encouraged to load and test the software's suitability as regards their
|
|
||||||
requirements in conditions enabling the security of their systems and/or
|
|
||||||
data to be ensured and, more generally, to use and operate it in the
|
|
||||||
same conditions as regards security.
|
|
||||||
.
|
|
||||||
The fact that you are presently reading this means that you have had
|
|
||||||
knowledge of the CeCILL-C license and that you accept its terms.
|
|
||||||
.
|
|
||||||
On Eole systems, the complete text of the CeCILL-C License can be found
|
|
||||||
in `/usr/share/common-licenses/CeCILL-2'.
|
|
2
debian/eole-lemonldap-ng-scribe.install
vendored
2
debian/eole-lemonldap-ng-scribe.install
vendored
@ -1,2 +0,0 @@
|
|||||||
usr/share/eole/creole/dicos/71_lemonldap_ng_scribe.xml
|
|
||||||
usr/share/eole/postservice/98-lemonldap-ng-scribe-register-hosts
|
|
6
debian/eole-lemonldap.install
vendored
6
debian/eole-lemonldap.install
vendored
@ -1,6 +0,0 @@
|
|||||||
usr/share/creole/
|
|
||||||
usr/share/eole/creole/dicos/70_lemonldap_ng.xml
|
|
||||||
usr/share/eole/creole/distrib/
|
|
||||||
usr/share/eole/diagnose/
|
|
||||||
usr/share/eole/postservice/99-lemonldap-ng
|
|
||||||
usr/share/eole/posttemplate/
|
|
3
debian/gbp.conf
vendored
3
debian/gbp.conf
vendored
@ -1,3 +0,0 @@
|
|||||||
# Set per distribution debian tag
|
|
||||||
[DEFAULT]
|
|
||||||
debian-tag = debian/eole/%(version)s
|
|
9
debian/rules
vendored
9
debian/rules
vendored
@ -1,9 +0,0 @@
|
|||||||
#!/usr/bin/make -f
|
|
||||||
# -*- makefile -*-
|
|
||||||
|
|
||||||
# Uncomment this to turn on verbose mode.
|
|
||||||
#export DH_VERBOSE=1
|
|
||||||
#export DH_OPTIONS=-v
|
|
||||||
|
|
||||||
%:
|
|
||||||
dh $@
|
|
BIN
debian/source/.format.un~
vendored
BIN
debian/source/.format.un~
vendored
Binary file not shown.
1
debian/source/format
vendored
1
debian/source/format
vendored
@ -1 +0,0 @@
|
|||||||
3.0 (native)
|
|
2
eole-lemonldap-ng.mk
Normal file
2
eole-lemonldap-ng.mk
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
creolefuncs_DATA_DIR := $(DESTDIR)/usr/share/creole/funcs
|
||||||
|
lemonldap-ng_DATA_DIR := $(eole_DIR)/lemonldap-ng
|
@ -1 +0,0 @@
|
|||||||
creolefuncs_DATA_DIR := $(DESTDIR)/usr/share/creole/funcs
|
|
102
lemonldap-ng/LDAP.pm
Normal file
102
lemonldap-ng/LDAP.pm
Normal file
@ -0,0 +1,102 @@
|
|||||||
|
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;
|
20
lemonldap-ng/LDAP.pm.patch
Normal file
20
lemonldap-ng/LDAP.pm.patch
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
--- /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;
|
12
posttemplate/70-lemonldap-patch
Executable file
12
posttemplate/70-lemonldap-patch
Executable file
@ -0,0 +1,12 @@
|
|||||||
|
#!/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
|
443
tmpl/lmConf-1.js
443
tmpl/lmConf-1.js
@ -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
|
|
||||||
}
|
|
@ -1,17 +1,25 @@
|
|||||||
%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,
|
||||||
@ -173,9 +181,7 @@
|
|||||||
"ldapSearchDeref": "find",
|
"ldapSearchDeref": "find",
|
||||||
"ldapBase": "%%ldapUserBaseDN",
|
"ldapBase": "%%ldapUserBaseDN",
|
||||||
"ldapExportedVars": {
|
"ldapExportedVars": {
|
||||||
"cn": "cn",
|
%%custom_join(%%ldapAttr, ',\n ')
|
||||||
"mail": "mail",
|
|
||||||
"uid": "uid"
|
|
||||||
},
|
},
|
||||||
"ldapGroupAttributeName": "memberUid",
|
"ldapGroupAttributeName": "memberUid",
|
||||||
"ldapGroupAttributeNameGroup": "dn",
|
"ldapGroupAttributeNameGroup": "dn",
|
||||||
@ -190,9 +196,9 @@
|
|||||||
"ldapServer": "%%ldapScheme://%%ldapServer",
|
"ldapServer": "%%ldapScheme://%%ldapServer",
|
||||||
%if %%ldapScheme == "ldaps"
|
%if %%ldapScheme == "ldaps"
|
||||||
%if %%lmldapverify == "oui"
|
%if %%lmldapverify == "oui"
|
||||||
"ldapVerify": "required",
|
"ldapVerify": "Require",
|
||||||
%else
|
%else
|
||||||
"ldapVerify": "none",
|
"ldapVerify": "None",
|
||||||
%end if
|
%end if
|
||||||
%end if
|
%end if
|
||||||
"ldapSetPassword": 0,
|
"ldapSetPassword": 0,
|
||||||
@ -218,13 +224,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",
|
||||||
@ -286,7 +285,7 @@
|
|||||||
"portalDisplayChangePassword": "$_auth =~ /^(AD|LDAP|DBI|Demo)$/",
|
"portalDisplayChangePassword": "$_auth =~ /^(AD|LDAP|DBI|Demo)$/",
|
||||||
"portalDisplayLoginHistory": 1,
|
"portalDisplayLoginHistory": 1,
|
||||||
"portalDisplayLogout": 1,
|
"portalDisplayLogout": 1,
|
||||||
"portalDisplayRegister": 1,
|
"portalDisplayRegister": %%boolean[%%llRegisterAccount],
|
||||||
"portalDisplayResetPassword": %%boolean[%%llResetPassword],
|
"portalDisplayResetPassword": %%boolean[%%llResetPassword],
|
||||||
"portalForceAuthn": 0,
|
"portalForceAuthn": 0,
|
||||||
"portalForceAuthnInterval": 0,
|
"portalForceAuthnInterval": 0,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user