diff --git a/group_vars/prod b/group_vars/prod index 187b24ebc46f3be19e6f3620ed1d4c3071a2ed93..5f443b90283f27b0cae5425325762351b140f089 100644 --- a/group_vars/prod +++ b/group_vars/prod @@ -136,4 +136,5 @@ oauth_global: oidc_global: provider_url: https://uffd.warpzone.ms - logout_url: https://uffd.warpzone.ms/logout \ No newline at end of file + logout_url: https://uffd.warpzone.ms/logout + ldap_base_dn: "dc=warpzone,dc=ms" diff --git a/group_vars/test b/group_vars/test index 3ef840eca45fb499c666565ecd04144b180eb83d..f731e281e3ab0c90f71014279aec7ec32d68ebcd 100644 --- a/group_vars/test +++ b/group_vars/test @@ -47,6 +47,7 @@ oauth_global: oidc_global: provider_url: https://uffd.test-warpzone.de logout_url: https://uffd.test-warpzone.de/logout + ldap_base_dn: "dc=test-warpzone,dc=de" # Matrix Settings matrix: diff --git a/testserver/docker_matrix/tasks/main.yml b/testserver/docker_matrix/tasks/main.yml index 6a7bcd15c08928f6612eb9cbbd7b71dd5c684d3f..b7aac20eb539c5bf1a4f1db63e19df348278b3ff 100644 --- a/testserver/docker_matrix/tasks/main.yml +++ b/testserver/docker_matrix/tasks/main.yml @@ -3,6 +3,8 @@ - include_tasks: ../functions/get_secret.yml with_items: - { path: /srv/shared/noreply_email_pass, length: -1 } + - { path: /srv/matrix/uffd_api_secret, length: 32 } + - { path: /srv/matrix/ldap_bind_pw, length: 32 } - { path: /srv/matrix/matrix_macaroon_secret_key, length: 32 } - { path: /srv/matrix/matrix_registration_shared_secret, length: 32 } - { path: /srv/matrix/matrix_form_secret, length: 32 } @@ -30,6 +32,7 @@ group: "999" with_items: - "/srv/matrix/db/" + - "/srv/matrix/uffd-ldapd/" - name: Konfig-Dateien erstellen @@ -40,6 +43,7 @@ - docker-compose.yml - synapse-data/homeserver.log.config - synapse-data/homeserver.yaml + - uffd-ldapd/Dockerfile register: configs diff --git a/testserver/docker_matrix/templates/docker-compose.yml b/testserver/docker_matrix/templates/docker-compose.yml index fa57f24902160d1054e901f304430cc9a21090e5..9ed7e9f4d13074d030c89157986ca8d28c35f1eb 100644 --- a/testserver/docker_matrix/templates/docker-compose.yml +++ b/testserver/docker_matrix/templates/docker-compose.yml @@ -23,6 +23,18 @@ services: networks: - default + ldap: + + build: uffd-ldapd/ + restart: always + environment: + SERVER_API_URL: "{{ oidc_global.provider_url }}" + SERVER_API_USER: "matrixldap" + SERVER_API_SECRET: "{{ uffd_api_secret }}" + SERVER_BASE_DN: "{{ oidc_global.ldap_base_dn }}" + SERVER_BIND_PASSWORD: "{{ ldap_bind_pw}}" + networks: + - default synapse: @@ -32,6 +44,7 @@ services: cpuset: "0" depends_on: - db + - ldap volumes: - /srv/matrix/synapse-data/:/data environment: diff --git a/testserver/docker_matrix/templates/synapse-data/homeserver.yaml b/testserver/docker_matrix/templates/synapse-data/homeserver.yaml index 4b56dede1ad486456af640fa31bdedc997e8f29c..31bb416c5676caf19b915e4c3f021ffde03d5130 100644 --- a/testserver/docker_matrix/templates/synapse-data/homeserver.yaml +++ b/testserver/docker_matrix/templates/synapse-data/homeserver.yaml @@ -86,8 +86,9 @@ max_spider_size: 10M enable_registration: false password_config: - enabled: false + enabled: true +# OIDC Single Sign-On with uffd oidc_providers: - idp_id: "uffd" idp_name: "warpzone SSO (uffd)" @@ -108,6 +109,18 @@ oidc_providers: display_name_template: "{% raw %}{{ user.name }}{% endraw %}" email_template: "{% raw %}{{ user.email }}{% endraw %}" +# Password login with uffd-ldapd +modules: + - module: "ldap_auth_provider.LdapAuthProviderModule" + config: + enabled: true + uri: "ldap://ldap:389" + start_tls: false + base: "ou=users,{{ oidc_global.ldap_base_dn }}" + attributes: + uid: "uid" + mail: "mail" + name: "displayName" auto_join_rooms: - "#warpzone:{{ matrix.domain }}" diff --git a/testserver/docker_matrix/templates/uffd-ldapd/Dockerfile b/testserver/docker_matrix/templates/uffd-ldapd/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..c39c751ffa4e4807603d41a10ecba8da78910292 --- /dev/null +++ b/testserver/docker_matrix/templates/uffd-ldapd/Dockerfile @@ -0,0 +1,24 @@ +FROM debian:bookworm-slim + +# Set environment variables +ENV DEBIAN_FRONTEND=noninteractive + +# Install necessary dependencies and configure custom repository +RUN apt-get update \ + && apt-get install -y --no-install-recommends wget gnupg ca-certificates \ + && wget -O- "https://packages.cccv.de/docs/cccv-archive-key.gpg" | gpg --dearmor -o /etc/apt/trusted.gpg.d/cccv-archive-key.gpg \ + && echo "deb https://packages.cccv.de/uffd bookworm main" > /etc/apt/sources.list.d/custom.list \ + && apt-get update \ + && apt-get install -y --no-install-recommends uffd-ldapd ldap-utils \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* + +USER 999 +EXPOSE 389/tcp + +# Set default command +CMD ["/usr/sbin/uffd-ldapd","--socket-address","0.0.0.0:389"] + +# Get all LDAP Entries +# ldapsearch -x -H ldap://127.0.0.1 -D "cn=service,ou=system,{{ oidc_global.ldap_base_dn }}" -w "{{ ldap_bind_pw }}" -b "ou=users,{{ oidc_global.ldap_base_dn }}" "(objectClass=*)" +