jstormes / ldap
ldap连接器
Requires (Dev)
- phpunit/phpunit: ^7.0
- squizlabs/php_codesniffer: ^2.3|^3.0
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
- + 从Docker ...
-
文件->设置->语言和框架->PHP->测试框架
- + PHPUnit通过远程解释器
- CLI解释器:ldap_test:latest
- PHPUnit库 * 使用Composer自动加载器
- 脚本路径:/opt/project/vendor/autoload.php
- 默认配置文件:/opt/project/phpunit.xml.dist
- + PHPUnit通过远程解释器
-
运行->编辑配置
- + PHPUnit
- 名称 Docker PHPUnit
- 在配置文件中定义
- + 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。