DDEV and openldap

I use the following docker images:

Create the following docker-compose.openldap.yaml file in your project/.ddev/ directory.


services:
  openldap:
    # Name of container using standard ddev convention
    container_name: ddev-${DDEV_SITENAME}-openldap
    image: osixia/openldap:1.5.0
    networks: [default, ddev_default]
    restart: "no"
    # Meilisearch is served from this port inside the container.
    ports:
      - 389
      - 636
    # These labels ensure this service is discoverable by ddev.
    labels:
      com.ddev.site-name: ${DDEV_SITENAME}
      com.ddev.approot: $DDEV_APPROOT
    environment:
      # This defines the host name the service should be accessible from. This
      # will be sitename.ddev.site.
      - VIRTUAL_HOST=$DDEV_HOSTNAME
      - LDAP_LOG_LEVEL=256
      - LDAP_ORGANISATION=Example Inc.
      - LDAP_DOMAIN=example.org
      - LDAP_BASE_DN=dc=example,dc=org
      - LDAP_ADMIN_PASSWORD=admin
      - LDAP_CONFIG_PASSWORD=config
      - LDAP_READONLY_USER=false
      #- LDAP_READONLY_USER_USERNAME=readonly
      #- LDAP_READONLY_USER_PASSWORD=readonly
      - LDAP_RFC2307BIS_SCHEMA=false
      - LDAP_BACKEND=mdb
      - LDAP_TLS=true
      - LDAP_TLS_CRT_FILENAME=ldap.crt
      - LDAP_TLS_KEY_FILENAME=ldap.key
      - LDAP_TLS_DH_PARAM_FILENAME=dhparam.pem
      - LDAP_TLS_CA_CRT_FILENAME=ca.crt
      - LDAP_TLS_ENFORCE=false
      - LDAP_TLS_CIPHER_SUITE=SECURE256:-VERS-SSL3.0
      - LDAP_TLS_VERIFY_CLIENT=demand
      - LDAP_REPLICATION=false
      #- LDAP_REPLICATION_CONFIG_SYNCPROV: 'binddn="cn=admin,cn=config" bindmethod=simple credentials="$$- LDAP_CONFIG_PASSWORD" searchbase="cn=config" type=refreshAndPersist retry="60 +" timeout=1 starttls=critical'
      #- LDAP_REPLICATION_DB_SYNCPROV: 'binddn="cn=admin,$$LDAP_BASE_DN" bindmethod=simple credentials="$$LDAP_ADMIN_PASSWORD" searchbase="$$LDAP_BASE_DN" type=refreshAndPersist interval=00:00:00:10 retry="60 +" timeout=1 starttls=critical'
      #- LDAP_REPLICATION_HOSTS=#PYTHON2BASH:['ldap://ldap.example.org','ldap://ldap2.example.org']"
      - KEEP_EXISTING_CONFIG=false
      - LDAP_REMOVE_CONFIG_AFTER_SETUP=true
      - LDAP_SSL_HELPER_PREFIX=ldap

    volumes:
      - ldap_certificates:/container/service/slapd/assets/certs
      - ldap_data:/var/lib/ldap
      - ldap_config:/etc/ldap/slapd.d

    external_links:
      - "ddev-router:${DDEV_SITENAME}.${DDEV_TLD}"

  phpldapadmin:

    image: osixia/phpldapadmin:latest
    container_name: ddev-${DDEV_SITENAME}-phpldapadmin
    networks: [default, ddev_default]
    labels:
      com.ddev.site-name: ${DDEV_SITENAME}
      com.ddev.approot: $DDEV_APPROOT
    environment:
      - HOSTNAME=$DDEV_HOSTNAME
      - PHPLDAPADMIN_LDAP_HOSTS=ddev-${DDEV_SITENAME}-openldap
      - PHPLDAPADMIN_HTTPS=false
      - VIRTUAL_HOST=$DDEV_HOSTNAME
      - HTTP_EXPOSE=8076:80
      - HTTPS_EXPOSE=8077:80
    expose:
      - "80"
    depends_on:
      - openldap

volumes:
  ldap_certificates:
  ldap_data:
  ldap_config:

Restart your project. You can now call the phpLDAPadmin backend with https://<project>.ddev.site:8077/

User: cn=admin,dc=example,dc=org
Password: admin

Inside of your project you can connect to the ldap server with:

$connect = ldap_connect("ldap://openldap:389");

@ldap_set_option($connect, LDAP_OPT_PROTOCOL_VERSION, 3);

$bind = ldap_bind($connect, 'cn=admin,dc=example,dc=org' , 'admin');

Wie hilfreich war dieser Beitrag?

Klicke auf die Sterne um zu bewerten!

Durchschnittliche Bewertung 0 / 5. Anzahl Bewertungen: 0

Bisher keine Bewertungen! Sei der Erste, der diesen Beitrag bewertet.

Sven Wappler

TYPO3 Experte, symfony, Magento, SEO, Frontend und Backend

Das könnte dich auch interessieren …

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert