Skip to content

Commit af32d6f

Browse files
committed
Add readonly user bootstrap option
1 parent 274dc88 commit af32d6f

File tree

7 files changed

+45
-46
lines changed

7 files changed

+45
-46
lines changed

README.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,11 @@ Required and used for new ldap server only :
167167
- **LDAP_ADMIN_PASSWORD** Ldap Admin password. Defaults to `admin`
168168
- **LDAP_CONFIG_PASSWORD** Ldap Config password. Defaults to `config`
169169

170+
171+
- **LDAP_READONLY_USER** Add a read only user. Defaults to `false`
172+
- **LDAP_READONLY_USER_USERNAME** Read only user username. Defaults to `readonly`
173+
- **LDAP_READONLY_USER_PASSWORD** Read only user password. Defaults to `readonly`
174+
170175
TLS options :
171176
- **LDAP_TLS**: Add openldap TLS capabilities. Defaults to `true`
172177
- **LDAP_TLS_CRT_FILENAME**: Ldap ssl certificate filename. Defaults to `ldap.crt`
@@ -175,8 +180,12 @@ TLS options :
175180

176181
Replication options :
177182
- **LDAP_REPLICATION**: Add openldap replication capabilities. Defaults to `false`
183+
178184
- **LDAP_REPLICATION_CONFIG_SYNCPROV**: olcSyncRepl options used for the config database. Without **rid** and **provider** which are automaticaly added based on LDAP_REPLICATION_HOSTS. Defaults to `binddn="cn=admin,cn=config" bindmethod=simple credentials=$LDAP_CONFIG_PASSWORD searchbase="cn=config" type=refreshAndPersist retry="5 5 300 5" timeout=1 starttls=critical`
185+
179186
- **LDAP_REPLICATION_HDB_SYNCPROV**: olcSyncRepl options used for the HDB database. Without **rid** and **provider** which are automaticaly added based on LDAP_REPLICATION_HOSTS. Defaults to `binddn="cn=admin,$LDAP_BASE_DN" bindmethod=simple credentials=$LDAP_ADMIN_PASSWORD searchbase="$LDAP_BASE_DN" type=refreshAndPersist interval=00:00:00:10 retry="5 5 300 5" timeout=1 starttls=critical`
187+
188+
180189
- **LDAP_REPLICATION_HOSTS**: list of replication hosts, must contains the current container hostname set by -h on docker run command. Defaults to `['ldap://ldap.example.org', 'ldap://ldap2.example.org']`
181190

182191
### Set environment variables at run time :

image/env.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ LDAP_DOMAIN: example.org
88
LDAP_ADMIN_PASSWORD: admin
99
LDAP_CONFIG_PASSWORD: config
1010

11+
LDAP_READONLY_USER: true
12+
LDAP_READONLY_USER_USERNAME: readonly
13+
LDAP_READONLY_USER_PASSWORD: readonly
14+
1115
# Tls
1216
LDAP_TLS: true
1317
LDAP_TLS_CRT_FILENAME: ldap.crt

image/service/slapd/assets/add-readonly-user.sh

Lines changed: 0 additions & 35 deletions
This file was deleted.

image/service/slapd/assets/config/readonly-user/readonly-user-acl.ldif renamed to image/service/slapd/assets/config/bootstrap/ldif/readonly-user/readonly-user-acl.ldif

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,4 @@ delete: olcAccess
44
-
55
add: olcAccess
66
olcAccess: to attrs=userPassword,shadowLastChange by self write by dn="cn=admin,{{ LDAP_BASE_DN }}" write by anonymous auth by * none
7-
olcAccess: to * by self write by dn="cn=admin,{{ LDAP_BASE_DN }}" write by dn="cn={{ LDAP_READONLY_USERNAME }},{{ LDAP_BASE_DN }}" read by * none
7+
olcAccess: to * by self write by dn="cn=admin,{{ LDAP_BASE_DN }}" write by dn="cn={{ LDAP_READONLY_USER_USERNAME }},{{ LDAP_BASE_DN }}" read by * none
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
dn: cn={{ LDAP_READONLY_USER_USERNAME }},{{ LDAP_BASE_DN }}
2+
changetype: add
3+
cn: {{ LDAP_READONLY_USER_USERNAME }}
4+
objectClass: simpleSecurityObject
5+
objectClass: organizationalRole
6+
userPassword: {{ LDAP_READONLY_USER_PASSWORD_ENCRYPTED }}
7+
description: LDAP read only user

image/service/slapd/assets/config/readonly-user/readonly-user.ldif

Lines changed: 0 additions & 7 deletions
This file was deleted.

image/service/slapd/container-start.sh

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ EOF
104104

105105
# start OpenLDAP
106106
echo "Starting openldap..."
107-
slapd -h "ldapi:///" -u openldap -g openldap
107+
slapd -h "ldap://localhost ldapi:///" -u openldap -g openldap
108108
echo "[ok]"
109109

110110
# set bootstrap config part 2
@@ -142,12 +142,33 @@ EOF
142142
get_ldap_base_dn
143143
sed -i "s|{{ LDAP_BASE_DN }}|${LDAP_BASE_DN}|g" /container/service/slapd/assets/config/bootstrap/ldif/02-security.ldif
144144

145-
# process config files
146-
for f in $(find /container/service/slapd/assets/config/bootstrap/ldif -name \*.ldif -type f | sort); do
145+
# process config files in bootstrap directory (do no process files in subdirectories)
146+
for f in $(find /container/service/slapd/assets/config/bootstrap/ldif -name \*.ldif -mindepth 1 -maxdepth 1 -type f | sort); do
147147
echo "Processing file ${f}"
148148
ldapmodify -Y EXTERNAL -Q -H ldapi:/// -f $f
149149
done
150150

151+
# read only user
152+
if [ "${LDAP_READONLY_USER,,}" == "true" ]; then
153+
154+
echo "Add read only user"
155+
156+
LDAP_READONLY_USER_PASSWORD_ENCRYPTED=$(slappasswd -s $LDAP_READONLY_USER_PASSWORD)
157+
sed -i "s|{{ LDAP_READONLY_USER_USERNAME }}|${LDAP_READONLY_USER_USERNAME}|g" /container/service/slapd/assets/config/bootstrap/ldif/readonly-user/readonly-user.ldif
158+
sed -i "s|{{ LDAP_READONLY_USER_PASSWORD_ENCRYPTED }}|${LDAP_READONLY_USER_PASSWORD_ENCRYPTED}|g" /container/service/slapd/assets/config/bootstrap/ldif/readonly-user/readonly-user.ldif
159+
sed -i "s|{{ LDAP_BASE_DN }}|${LDAP_BASE_DN}|g" /container/service/slapd/assets/config/bootstrap/ldif/readonly-user/readonly-user.ldif
160+
161+
sed -i "s|{{ LDAP_READONLY_USER_USERNAME }}|${LDAP_READONLY_USER_USERNAME}|g" /container/service/slapd/assets/config/bootstrap/ldif/readonly-user/readonly-user-acl.ldif
162+
sed -i "s|{{ LDAP_BASE_DN }}|${LDAP_BASE_DN}|g" /container/service/slapd/assets/config/bootstrap/ldif/readonly-user/readonly-user-acl.ldif
163+
164+
echo "Processing file /container/service/slapd/assets/config/bootstrap/ldif/readonly-user/readonly-user.ldif"
165+
ldapmodify -h localhost -p 389 -D cn=admin,$LDAP_BASE_DN -w $LDAP_ADMIN_PASSWORD -f /container/service/slapd/assets/config/bootstrap/ldif/readonly-user/readonly-user.ldif
166+
167+
echo "Processing file /container/service/slapd/assets/config/bootstrap/ldif/readonly-user/readonly-user-acl.ldif"
168+
ldapmodify -Y EXTERNAL -Q -H ldapi:/// -f /container/service/slapd/assets/config/bootstrap/ldif/readonly-user/readonly-user-acl.ldif
169+
170+
fi
171+
151172
fi
152173

153174
# tls config

0 commit comments

Comments
 (0)