2017 © Pedro PelĂĄez
 

library symfonymultiencoderldapprovider

Extension for multi encoder in Symfony LDAP Auth

image

wheregroup/symfonymultiencoderldapprovider

Extension for multi encoder in Symfony LDAP Auth

  • Thursday, February 1, 2018
  • by eSlider
  • Repository
  • 1 Watchers
  • 0 Stars
  • 19 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 2 Versions
  • 0 % Grown

The README.md

Readme

This module is mainly developed for the use in the Mapbender Project but should also work fine in other projects. There is an example security.yml and parameter.yml in the example directory., (*1)

Konfiguration LDAP im Mapbender

Um einen Verzeichnisdienst ĂŒber LDAP im Mapbender einzubinden, mĂŒssen einige Änderungen an der Konfiguration vorgenommen werden:, (*2)

Zuerst mĂŒssen in der paramter.yml folgende Parameter eingetragen werden Alle Parameter befinden sich im ldap Namespace :, (*3)

Parameter Beschreibung Default
host Hostname des Verzeichnisdienstes -
port Port des Verzeichnisdienstes -
useSSL Soll SSL VerschlĂŒsselung bei der Verbindung genutzt werden true
useTLS Soll TLS VerschlĂŒsselung bei der Verbindung genutzt werden true
bind.dn Distinguished Name des lesenden Nutzers -
user.query Query, um nach Nutzern zu suchen -
user.baseDn Distinguished Name der Nutzer -
user.nameAttributte Attribut das den Username enthÀlt -
group.query Query, um nach Gruppen zu suchen -
group.nameAttribute Attribut das den Gruppennamen enthÀlt -
group.filter Filter, um Suche nach Gruppen einzuschrÀnken. -
group.adminFilter Filter, um Suche nach Gruppen einzuschrÀnken. -
user.adminfilter Filter, um Suche nach Usern im Adminbereich einzuschrÀnken. -

| Tabelle 1. - Auflistung aller benötigten Parameter |, (*4)

ZusĂ€tzlich muss die security.yml der Mapbender-Installation angepasst werden. Hier muss ein LDAP-Client als Symfonyservice eingerichtet werden. Folgend ist beispielhaft die Definition fĂŒr den symfony-eigenen LDAP-Client mit den in Schritt 1 genutzten Parametern., (*5)


services: ldapClient: class: Symfony\Component\Ldap\LdapClient arguments: - %ldap.host% #Address to LDAPServer - %ldap.port% #Port where LDAPServer is listening - %ldap.version% #LDAP Protocol version - %ldap.useSSL% # SSL #Use SSL - %ldap.useTLS% # SSL #Use SSL

Weiter muss ein LDAPUserProvider installiert und konfiguriert werden. Hier empfiehlt es sich den WhereGroup/SymfonyMultiEncoderLDAPProvider zu nutzen. Dieser ist direkt fĂŒr den Mapbender entwickelt und steht als composer-Paket zur VerfĂŒgung. Er kann mit, (*6)

composer require WhereGroup/SymfonyMultiEncoderLDAPProvider, (*7)

zum Projekt hinzugefĂŒgt werden. Die Konfiguration erfolgt wie im folgendem Beispiel. Hierbei ist zu beachten, dass der Wert @ldapClient mit dem Namen des zuvor definierten LDAPClient-Service gefĂŒllt werden muss. Alle anderen Werte sind in der Tabelle 1. beschrieben., (*8)

    mb.ldap.userProvider:
            class: Wheregroup\Component\LdapMultiEncoderUserProvider
            arguments:
                - @ldapClient
                - %ldap.user.base_dn%
                - %ldap.bind.dn%
                - %ldap.bind.pwd%
                - %ldap.group.defaultGroups%
                - %ldap.user.nameAttribute%
                - %ldap.user.query% #dn
                - %ldap.group.dn%
                - %ldap.group.query%
                - %ldap.group.nameAttribute%

Danach muss noch der neu eingerichtete UserProvider registriert werden. DafĂŒr muss in der security.yml der Key providers , um folgende Wert erweitert werden., (*9)


ldapProvider: id: mb.ldap.userProvider

Zuletzt muss noch der ldap-login in den FireWall-Definitionen aktiviert werden. Hierzu muss in der Firewall-Konfiguration der Block fom_login mit folgender Code ausgetauscht werden., (*10)


form_login_ldap: check_path: /user/login/check login_path: /user/login service: ldapClient dn_string: %dn_search%

Wenn neben des LDAP-Logins noch zusĂ€tzlich, der standard Mapbender-Login basierend auf der fom_user Tabelle genutzt werden soll. Darf der Codeblock fom_login nicht ausgetauscht werden. Dann wird der Block form_login_ldap zusĂ€tzlich hinzugefĂŒgt., (*11)

Nutzung von mehreren Password Encodern innerhalb eines Verzeichnisses

Falls innerhalb des Verzeichnisdienstes die Möglichkeit genutzt wird fĂŒr unterschiedliche Passwörter verschiedene Encoder zu nutzen, mĂŒssen diese in der security.yml konfiguriert werden. Jeder Encoder der genutzt werden soll, wird als benannter Encoder definiert., (*12)

Hierbei muss der Name des Encoders exakt so lauten, wie dieser auch im Verzeichnisdienst lautet z.B. wenn der Wert fĂŒr das Passwort so aussieht., (*13)

{SHA512: 9a8cda40689d57f401ac182f034573d20360db3c62bb3338f83e8c11bd83bdd1
8440d1b066a0387d0a466bb945c8b6741d6d11dffa154a48b5c0fae755477b86 }

muss der Encoder in der security.yml auch SHA512 heißen. Folgend eine Konfiguration fĂŒr plaintext und SHA512 Encoder., (*14)


encoders: FOM\UserBundle\Entity\User: plaintext plaintext: algorithm: plaintext SHA512: algorithm: sha512 iterations: 1

Falls nur ein Encoder genutzt werden soll, kann dieser direkt an die Entitiy gebunden werden., (*15)

encoders:
      FOM\UserBundle\Entity\User: SHA512

Beispiel Konfiguration der Parameter


# LDAP ldap.host: localhost ldap.port: 389 ldap.version: 3 # LDAP Version (default: 3) ldap.user.baseDn: 'ou=user,dc=wheregroup,dc=com' ldap.user.nameAttribute: cn ldap.user.query: 'cn={username}' ldap.group.baseDn: ou=groups,dc=exampleORG,dc=com ldap.group.query: member=cn={username},ou=user,dc=exampleORG,dc=com ldap.bind.dn: cn=admin ,dc=exampleORG,dc=com ldap.bind.pwd: root ldap.group.nameattribute: cn ldap.group.adminFilter: (objectclass=top) ldap.user.adminFilter: (objectclass=top)

The Versions

01/02 2018

dev-master

9999999-dev https://www.wheregroup.com/

Extension for multi encoder in Symfony LDAP Auth

  Sources   Download

MIT

The Requires

 

by David Patzke

extension

19/10 2017

0.1

0.1.0.0 https://www.wheregroup.com/

Extension for multi encoder in Symfony LDAP Auth

  Sources   Download

MIT

The Requires

 

by David Patzke

extension