如何将Laradock连接至外部LDAP服务器?
Laradock环境下Laravel 10连接外部LDAP服务器配置指引
你已经成功让容器ping通LDAP服务器,说明网络配置没问题,接下来只需要完成PHP LDAP扩展安装、Laravel LDAP包配置和认证逻辑设置这几步:
1. 为Laradock容器安装PHP LDAP扩展
Laradock的workspace和php-fpm容器默认未启用LDAP扩展,需要通过.env配置开启:
- 打开Laradock根目录的
.env文件,找到以下配置项并设为true:WORKSPACE_INSTALL_LDAP=true PHP_FPM_INSTALL_LDAP=true - 重新构建相关容器以安装扩展:
docker-compose up -d --build workspace php-fpm apache2
2. 安装Laravel LDAP认证依赖包
进入workspace容器执行composer安装:
- 进入容器:
docker-compose exec workspace bash - 安装Laravel兼容的LDAP认证包:
composer require adldap2/adldap2-laravel - 发布LDAP配置文件到项目:
php artisan vendor:publish --provider="Adldap\Laravel\AdldapServiceProvider"
3. 配置LDAP服务器连接参数
- 打开项目根目录的
.env文件,添加你的LDAP服务器信息(根据实际情况修改):# LDAP基础配置 LDAP_HOSTS=你的LDAP服务器IP或域名 LDAP_BASE_DN=dc=your-domain,dc=com LDAP_USERNAME=cn=admin,dc=your-domain,dc=com LDAP_PASSWORD=你的LDAP管理员密码 LDAP_PORT=389 LDAP_SCHEMA=OpenLDAP # 若为Active Directory则改为ActiveDirectory # SSL连接配置(可选,若用SSL则启用) LDAP_USE_SSL=false LDAP_PORT=636 # SSL端口 - 确认
config/adldap.php中的配置已读取.env变量(默认已配置,特殊需求可手动调整)。
4. 配置Laravel认证使用LDAP
修改config/auth.php,将认证守卫和提供者指向LDAP:
'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'ldap', // 替换为ldap提供者 ], // 其他守卫保持不变 ], 'providers' => [ 'ldap' => [ 'driver' => 'ldap', 'model' => App\Models\User::class, 'rules' => [], // 可添加自定义用户验证规则 'scopes' => [], // 可添加LDAP查询范围 ], // 其他提供者保持不变 ],
5. 测试连接与认证
- 在workspace容器内测试LDAP连接:
php artisan adldap:test - 连接成功后,即可使用LDAP服务器中的用户账号密码登录你的Laravel应用。
注意事项
- 确保外部LDAP服务器防火墙开放对应端口(389/636),允许Docker容器所在网络访问。
- 若使用SSL连接出现证书错误,可临时在
config/adldap.php中设置'tls' => false用于测试,生产环境建议配置可信证书。 - 如需将LDAP用户同步到本地数据库,可参考LDAP包文档实现自动同步逻辑。
内容的提问来源于stack exchange,提问作者Dominique Goubet
相关产品推荐
相关产品推荐

