rafa-carmo / ldap-connector
简单的ldap连接器
v1.0.5
2024-06-25 16:20 UTC
Requires
- php: >=7.4
- ext-ldap: *
- laravel/framework: >=8
README
轻松进行绑定并搜索用户。
依赖项
- ⚡ PHP 7.4
如何使用?
Laravel >= 8
1 - 安装库
composer require rafa-carmo/ldap-connector
2 - 发布配置文件
php artisan vendor:publish --tag=ldap-config --tag=ldap-service
3 - 在 .env 中填写配置
LDAP_HOST="localhost" # Obrigatório LDAP_USERNAME="Usuário para buscas" # Opcional LDAP_PASSWORD="Senha do usuário acima" # Opcional LDAP_PORT="Porta do Serviço" # Opcional - Padrão: 389 LDAP_TIMEOUT=5 # Opcional - Timeout padrão. LDAP_BASE_DN="dc=example,dc=com" # Opcional - Dominio Base LDAP_MAIL_DOMAIN=example.com # Opcional - Dominio para login com email LDAP_AUTO_CREATE=false # Opcional - Para implementar lógica de criar usuário automático no primeiro acesso
4 - 在您的登录区域实例化一个类以执行您的逻辑
# Exemplo ( Este é um exemplo para entender a lógica, aplique de acordo com seu projeto ) $ldap = new LdapConnectService(); # bind - Faz a verificação do usuário no servidor LDAP # Retorna True ou o erro. $bindAttempt = $ldap->bind($request->email, $request->password); # Caso tenha sucesso na validação do usuário faz o login if($bindAttempt === true) { # A função createOrUpdateLogin faz a validação no banco se o usuário ja existe # os parametros que devem ser passados são: # 1° - Classe de usuarios e autenticação # 2° - Caso vá atualizar ou criar o usuario, devem ser passados os dados que serão salvos no banco. (Atenção: A criação somente será efetuada caso a variável LDAP_AUTO_CREATE esteja true) # 3° - Um array com o nome do campo a ser validado no banco # caso o login seja efetuado com sucesso irá retornar true, caso não irá retornar a mensagem de erro de usuário não cadastrado. $login = $ldap->createOrUpdateLogin(User::class, [], ["username" => $ldap->getUsername($request->email)]); # Caso tenha efetuado o login redireciona para a rota home if($login === true) { return redirect(route('home')); } # Sobreescreve a mensagem de erro para retornar ao usuário. $bindAttempt = $login; } # retorna a rota anterior com as mensagens de erro return redirect()->back()->withErrors([ "error" => $bindAttempt ]);
自定义服务
要操作服务的功能,只需更改位于 App\Http\Services\LdapConnectService.php 的文件
类函数
私有函数 - createConnection
创建与ldap服务器的初始连接
私有函数 - sanitize
清理搜索字符串以防止LDAP注入
公共函数 - getUsername
清理并标准化用户名
公共函数 - genLoginString
生成将用于LDAP服务器的登录函数
如果您的登录方式不同,请在此文件中自定义此函数。
示例 1:如果是以邮箱登录,登录:usuario.nome
,函数将进行登录,将域添加到:usuario.nome@dominio.com
示例 2:如果是以uid登录,用户:usuario.nome
,函数将进行登录,将base_dn添加到:ud=usuario.nome,dc=example,dc=com
公共函数 - bind
将LDAP服务器进行绑定以验证用户。
返回:True表示已验证 / 错误信息。
公共函数 - findUser
如果已配置 LDAP_USERNAME
和 LDAP_PASSWORD
变量,则将使用此函数。
将在LDAP服务器上搜索用户。
接收2个参数
- 搜索登录(如果有@,则默认为邮件搜索)
- 搜索类型(如果留空,则默认为uid)
公共函数 - createOrUpdateLogin
将在系统数据库中创建或更新一个登记。
注意:只有在 LDAP_AUTO_CREATE
变量为true时才会执行创建。
函数参数
- 1° - 用户模型。
- 2° - 包含创建或更新用户数据的数组。
- 3° - 包含用户搜索数据的数组。
函数返回值
- True - 登录成功。
- 错误信息。
如何贡献?
- 对该项目进行
Fork
。 - 在您的仓库中克隆项目
- 创建一个带有新功能的分支
git branch -b nova-funcionalidade
- 提交新功能 `git commit -m "feat: funcionalidade"
- 将您的fork推送到远程
git push origin main
- 在您的仓库中点击Contribute并打开一个
pull request
谢谢,任何建议都可以创建一个issue。