jstormes/ldap

ldap连接器

0.0.3 2018-10-12 15:39 UTC

This package is auto-updated.

Last update: 2024-09-16 01:19:00 UTC


README

LDAP连接器 - 快速从LDAP AD或Open LDAP服务器登录和获取用户详细信息的方法。

作为创建针对Open LDAP和Active Directory (AD)的单点登录 (SSO) 解决方案的一部分,我需要验证用户对其LDAP用户名和密码。我还想获取一些基本信息,如他们的显示名称、电子邮件地址和组成员。

此Composer包提供了非常有限的LDAP功能,实现了AD和Open LDAP之间的一致接口。

此包还强制LDAP服务器只使用TLS连接。LDAP服务器的公钥证书必须可访问PHP服务器的信任链。

待办事项

添加密码更改

在以下位置找到了有关如何操作的提示

https://stackoverflow.com/questions/997424/active-directory-vs-openldap

CLI测试快速入门

确保您已安装Docker和Docker Compose。

  • docker-compose run composer install
  • docker-compose run phpunit

PHPStorm测试快速入门

  • 文件->设置->PHP->CLI解释器->...

    • + 从Docker ...
      • Docker Compose
      • 服务器:Docker
      • 配置文件:.\docker-compose.yml
      • 服务:phpunit
  • 文件->设置->语言和框架->PHP->测试框架

    • + PHPUnit通过远程解释器
      • CLI解释器:ldap_test:latest
      • PHPUnit库 * 使用Composer自动加载器
      • 脚本路径:/opt/project/vendor/autoload.php
      • 默认配置文件:/opt/project/phpunit.xml.dist
  • 运行->编辑配置

    • + PHPUnit
      • 名称 Docker PHPUnit
      • 在配置文件中定义

用法示例

use JStormes\Ldap\Connector\Connector;
use JStormes\Ldap\LdapAdapter\LdapAdapter;
use JStormes\Ldap\SchemaAdapter\SchemaAdapterOpenLDAP as SchemaAdapter;
use Psr\Log\NullLogger;

$serverString = "LOOPBACK:us.loopback.world:DC=us,DC=loopback,DC=world";

$ldapAdapter = new LdapAdapter();
$schemaAdapter = new SchemaAdapter($serverString);
$logger = new NullLogger();

$connector = new Connector($ldapAdapter, $schemaAdapter, $logger);
$username = 'testUser';
$password = 'test';
$isConnected = $connector->connect($username, $password);
$user = $connector->getUserEntity();

$userName = $user->getUserName();
$dispalyName = $user->getDisplayName();
$email = $user->getEmailAddress();
$groups = $user->getUserGroups();

交互式测试

交互式测试代码位于bin\test_ldap.php

  • docker-compose run composer install
  • docker-compose run bash
    • test_ldap.php
    • LDAP用户名:testUser
    • 密码:test

要使用您自己的LDAP设置进行测试,请将文件docker-compose.yml中的行LDAP_SERVER: LOOPBACK:us.loopback.world:DC=us,DC=loopback,DC=world:OpenLDAP更改为指向您的服务器并重新启动docker-compose命令。

此交互式测试会话使用XDebug,请将XDebug行更改为与您的设置匹配。

模拟LdapAdapters

LdapAdapter主要是一个对难以进行单元测试的代码的包装。为了使TDD更简单,我创建了这些难以进行单元测试的代码的模拟版本。

创建了两个版本的LdapAdapter。第一个是LdapAdMockAdapter.php,用于模拟与Microsoft Active Directory LDAP服务器的连接。接受的绑定和返回的搜索结果模拟了通过LDAP连接到Microsoft AD。

第二个模拟LdapOpenLdapMockAdatper.php模拟了与Open LDAP服务器的连接。

使用这两个模拟,可以使用这些模拟作为真实LDAP服务器的替代品来进行TDD。