Skip to content

Commit 9dbf4ed

Browse files
authored
Update alfresco (#13)
* * fix * * fix * * add mine * * add mine * * add mine * * add kerberos * * add kerberos * * add kerberos * * fix * * fix * * fix * * fix ldap query * * fix ldap query * * fix ldap query * * fix ldap query
1 parent 3a0be57 commit 9dbf4ed

File tree

8 files changed

+177
-9
lines changed

8 files changed

+177
-9
lines changed

README.md

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,15 @@
1-
# Alfresco Kerberos Test
1+
# Alfresco Kerberos
2+
This project provides the simple alfresco with kerberos enabled env for testing purposes.
3+
4+
### How to run
5+
```shell
6+
./start.sh
7+
# assuming the docker compose created env correctly
8+
# update the your machine dns to example.com
9+
kinit #authendicate with user (update krb5.conf with above domain name)
10+
klist # display the available session
11+
google-chrome --auth-server-whitelist="http://example.com" --auth-negotiate-delegate-whitelist="http://example.com" http://example.com/workspace
12+
```
213

314
### LDAP Details
415

@@ -18,13 +29,13 @@
1829
docker-compose up
1930

2031
# Verify valid keytab file generated
21-
docker exec keycloak-openldap kinit HTTP/keycloak.127.0.0.1.nip.io@EXAMPLE.ORG -k -t /etc/keytabs/keycloak.keytab
32+
docker exec kerberos kinit HTTP/example.com@EXAMPLE.ORG -k -t /etc/keytabs/alfresco.keytab
2233
# List and destroy Kerberos ticket
23-
docker exec keycloak-openldap klist
24-
docker exec keycloak-openldap kdestroy
34+
docker exec kerberos klist
35+
docker exec kerberos kdestroy
2536

2637
# Verify permissions of shared keytab file to ensure it can be read by Keycloak
27-
docker exec --user root keycloak chmod 644 /tmp/keytabs/keycloak.keytab
38+
docker exec --user root alfresco chmod 644 /etc/keytabs/alfresco.keytab
2839
```
2940

3041
### Kerberos Login Test
@@ -54,7 +65,7 @@ Creating users is now a two-step process:
5465

5566
## Kerberos Setup Verification / Debugging
5667

57-
> Run the following commands in `openldap` container: `docker exec -it openldap bash`
68+
> Run the following commands in `kerberos` container: `docker exec -it kerberos bash`
5869
> Default password for `ldapsearch` command is provided using `-w` flag. Use `-W` for interactive password prompt.
5970
6071
```sh

alfresco/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM alfresco/alfresco-content-repository:6.2.2
1+
FROM alfresco/alfresco-content-repository:6.2.2.3
22

33
# Customize container: Single Sign On via Kerberos
44

docker-compose.yaml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@ services:
2121
alfresco-network:
2222

2323
kerberos:
24-
image: nugaon/kerberos-with-ldap
24+
build:
25+
context: ./kerberos
2526
container_name: kerberos
2627
environment:
2728
LDAP_URL: "ldap://openldap:389"
@@ -90,8 +91,11 @@ services:
9091
-Dldap.synchronization.java.naming.security.principal=cn=admin,dc=example,dc=com
9192
-Dldap.synchronization.java.naming.security.credentials=admin
9293
94+
-Dldap.synchronization.groupQuery=\"(objectclass=groupOfNames)\"
9395
-Dldap.synchronization.groupSearchBase=\"dc=example,dc=com\"
9496
97+
-Dldap.synchronization.userIdAttributeName=uid
98+
-Dldap.synchronization.personQuery=\"(objectclass=inetOrgPerson)\"
9599
-Dldap.synchronization.userSearchBase=\"dc=example,dc=com\"
96100
97101
-Dkerberos.authentication.realm=EXAMPLE.COM

kerberos/Dockerfile

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
FROM ubuntu
2+
3+
# kerberos
4+
RUN apt-get update -y && apt-get install -y krb5-kdc-ldap krb5-admin-server \
5+
ldap-utils
6+
7+
EXPOSE 88 464 749
8+
9+
ADD ./config.sh /config.sh
10+
11+
ENTRYPOINT ["/config.sh"]

kerberos/config.sh

Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
#!/bin/bash
2+
3+
sleep 10
4+
5+
[[ "TRACE" ]] && set -x
6+
7+
: ${REALM:=EXAMPLE.COM}
8+
: ${DOMAIN_REALM:=example.com}
9+
: ${KERB_MASTER_KEY:=masterkey}
10+
: ${KERB_ADMIN_USER:=admin}
11+
: ${KERB_ADMIN_PASS:=admin}
12+
: ${SEARCH_DOMAINS:=example.com}
13+
: ${LDAP_DC:=dc=example,dc=com}
14+
: ${LDAP_USER:=admin}
15+
: ${LDAP_PASS:=admin}
16+
: ${LDAP_URL:=ldap://ldap}
17+
18+
fix_nameserver() {
19+
cat>/etc/resolv.conf<<EOF
20+
nameserver $NAMESERVER_IP
21+
search $SEARCH_DOMAINS
22+
EOF
23+
}
24+
25+
create_config() {
26+
KDC_ADDRESS=$(hostname -f)
27+
28+
cat>/etc/krb5.conf<<EOF
29+
[logging]
30+
default = FILE:/var/log/kerberos/krb5libs.log
31+
kdc = FILE:/var/log/kerberos/krb5kdc.log
32+
admin_server = FILE:/var/log/kerberos/kadmind.log
33+
34+
[libdefaults]
35+
default_realm = $REALM
36+
dns_lookup_realm = false
37+
dns_lookup_kdc = false
38+
ticket_lifetime = 24h
39+
renew_lifetime = 7d
40+
forwardable = true
41+
42+
[realms]
43+
$REALM = {
44+
kdc = $KDC_ADDRESS
45+
admin_server = $KDC_ADDRESS
46+
default_domain = $DOMAIN_REALM
47+
database_module = openldap_ldapconf
48+
}
49+
50+
[domain_realm]
51+
.$DOMAIN_REALM = $REALM
52+
$DOMAIN_REALM = $REALM
53+
54+
[dbdefaults]
55+
ldap_kerberos_container_dn = cn=krbContainer,$LDAP_DC
56+
57+
[dbmodules]
58+
openldap_ldapconf = {
59+
db_library = kldap
60+
ldap_kdc_dn = "cn=$LDAP_USER,$LDAP_DC"
61+
62+
# this object needs to have read rights on
63+
# the realm container, principal container and realm sub-trees
64+
ldap_kadmind_dn = "cn=$LDAP_USER,$LDAP_DC"
65+
66+
# this object needs to have read and write rights on
67+
# the realm container, principal container and realm sub-trees
68+
ldap_service_password_file = /etc/krb5kdc/service.keyfile
69+
ldap_servers = $LDAP_URL
70+
ldap_conns_per_server = 5
71+
}
72+
EOF
73+
}
74+
75+
create_db() {
76+
kdb5_util -P $KERB_MASTER_KEY -r $REALM create -s
77+
}
78+
79+
init_ldap() {
80+
kdb5_ldap_util -D cn=$LDAP_USER,$LDAP_DC create -subtrees $LDAP_DC -r $REALM -s -H $LDAP_URL <<EOF
81+
$LDAP_PASS
82+
$KERB_ADMIN_PASS
83+
$KERB_ADMIN_PASS
84+
EOF
85+
86+
kdb5_ldap_util -D cn=$LDAP_USER.,$LDAP_DC stashsrvpw -f /etc/krb5kdc/service.keyfile cn=$LDAP_USER,$LDAP_DC <<EOF
87+
$LDAP_PASS
88+
$LDAP_PASS
89+
$LDAP_PASS
90+
EOF
91+
}
92+
93+
start_kdc() {
94+
service krb5-kdc start
95+
service krb5-admin-server start
96+
}
97+
98+
restart_kdc() {
99+
service krb5-kdc restart
100+
service krb5-admin-server restart
101+
}
102+
103+
create_admin_user() {
104+
kadmin.local -q "addprinc -x dn=cn=$KERB_ADMIN_USER,$LDAP_DC admin" <<EOF
105+
$LDAP_PASS
106+
$LDAP_PASS
107+
EOF
108+
echo "admin@$REALM *" > /etc/krb5kdc/kadm5.acl
109+
}
110+
111+
if [ ! -f /kerberos_initialized ]; then
112+
mkdir -p /var/log/kerberos
113+
114+
create_config
115+
init_ldap
116+
create_admin_user
117+
create_db
118+
start_kdc
119+
120+
touch /kerberos_initialized
121+
else
122+
start_kdc
123+
fi
124+
125+
tail -F /var/log/kerberos/krb5kdc.log

openldap/ldap-init.ldif

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,22 @@ street: Elm 5
4747
userPassword: password
4848
jpegPhoto:: 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
4949

50+
dn: uid=dhrn,ou=People,{{ LDAP_BASE_DN }}
51+
objectclass: top
52+
objectclass: person
53+
objectclass: organizationalPerson
54+
objectclass: inetOrgPerson
55+
uid: dhrn
56+
cn: Dharan
57+
sn: G
58+
mail: dhrn@example.com
59+
telephoneNumber: 1234567890
60+
givenName: dhrn
61+
o: Company Software Inc.
62+
postalCode: 88441
63+
street: Elm 5
64+
userPassword: password
65+
5066
dn: cn=ldap-user,ou=RealmRoles,{{ LDAP_BASE_DN }}
5167
objectclass: top
5268
objectclass: groupOfNames

share/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM alfresco/alfresco-share:6.2.2
1+
FROM alfresco/alfresco-share:6.2.2.3
22
# Files to be included in container
33

44
USER root

start.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ printf "\n======== indexing the LDAP user with Kerberos ========\n\n"
1717
## index ldap user
1818
docker exec -ti kerberos kadmin.local -q "addprinc -pw password -x dn=uid=alice,ou=People,dc=example,dc=com alice"
1919
docker exec -ti kerberos kadmin.local -q "addprinc -pw password -x dn=uid=bob,ou=People,dc=example,dc=com bob"
20+
docker exec -ti kerberos kadmin.local -q "addprinc -pw password -x dn=uid=dhrn,ou=People,dc=example,dc=com dhrn"
2021

2122
printf "\n======== create kerberos principles for server ========\n\n"
2223
# Add principles for Alfresco and generate keytab

0 commit comments

Comments
 (0)