承接 wheregroup/symfonymultiencoderldapprovider 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

wheregroup/symfonymultiencoderldapprovider

Composer 安装命令:

composer require wheregroup/symfonymultiencoderldapprovider

包简介

Extension for multi encoder in Symfony LDAP Auth

关键字:

README 文档

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.

Konfiguration LDAP im Mapbender

Um einen Verzeichnisdienst über LDAP im Mapbender einzubinden, müssen einige Änderungen an der Konfiguration vorgenommen werden:

Zuerst müssen in der paramter.yml folgende Parameter eingetragen werden Alle Parameter befinden sich im ldap Namespace :

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 |

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.


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

composer require WhereGroup/SymfonyMultiEncoderLDAPProvider

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.

    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.


    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.


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.

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.

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.

{SHA512: 9a8cda40689d57f401ac182f034573d20360db3c62bb3338f83e8c11bd83bdd1
8440d1b066a0387d0a466bb945c8b6741d6d11dffa154a48b5c0fae755477b86 }

muss der Encoder in der security.yml auch SHA512 heißen. Folgend eine Konfiguration für plaintext und SHA512 Encoder.


    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.

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)

wheregroup/symfonymultiencoderldapprovider 适用场景与选型建议

wheregroup/symfonymultiencoderldapprovider 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 80 次下载、GitHub Stars 达 0, 最近一次更新时间为 2017 年 10 月 19 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「extension」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 wheregroup/symfonymultiencoderldapprovider 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 wheregroup/symfonymultiencoderldapprovider 我们能提供哪些服务?
定制开发 / 二次开发

基于 wheregroup/symfonymultiencoderldapprovider 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 80
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 7
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2017-10-19