Php 如何使用Adldap2 laravel软件包更改AD用户密码?
我想更改AD中用户的密码,因为AD中没有密码属性 目前正在运行带有Adldap2 laravel包的laravel框架,以便管理ADLDAP操作 这是我的ldap_auth.phpPhp 如何使用Adldap2 laravel软件包更改AD用户密码?,php,laravel,active-directory,openldap,adldap,Php,Laravel,Active Directory,Openldap,Adldap,我想更改AD中用户的密码,因为AD中没有密码属性 目前正在运行带有Adldap2 laravel包的laravel框架,以便管理ADLDAP操作 这是我的ldap_auth.php <?php return [ 'connection' => env('LDAP_CONNECTION', 'default'), 'provider' => Adldap\Laravel\Auth\DatabaseUserProvider::class, 'model'
<?php
return [
'connection' => env('LDAP_CONNECTION', 'default'),
'provider' => Adldap\Laravel\Auth\DatabaseUserProvider::class,
'model' => App\User::class,
'rules' => [
Adldap\Laravel\Validation\Rules\DenyTrashed::class,
],
'scopes' => [
Adldap\Laravel\Scopes\UidScope::class
],
'identifiers' => [
'ldap' => [
'locate_users_by' => 'uid',
'bind_users_by' => 'dn',
],
'database' => [
'guid_column' => 'objectguid',
'username_column' => 'username',
],
'windows' => [
'locate_users_by' => 'samaccountname',
'server_key' => 'AUTH_USER',
],
],
'passwords' => [
'sync' => env('LDAP_PASSWORD_SYNC', false),
'column' => 'password',
],
'login_fallback' => env('LDAP_LOGIN_FALLBACK', false),
'sync_attributes' => [
'username' => 'uid',
'password' => 'userPassword',
'name' => 'cn',
'role' => 'l',
'category' => 'businessCategory',
'telephone_number' => 'telephoneNumber',
'email' => 'mail'
],
'logging' => [
'enabled' => env('LDAP_LOGGING', true),
'events' => [
\Adldap\Laravel\Events\Importing::class => \Adldap\Laravel\Listeners\LogImport::class,
\Adldap\Laravel\Events\Synchronized::class => \Adldap\Laravel\Listeners\LogSynchronized::class,
\Adldap\Laravel\Events\Synchronizing::class => \Adldap\Laravel\Listeners\LogSynchronizing::class,
\Adldap\Laravel\Events\Authenticated::class => \Adldap\Laravel\Listeners\LogAuthenticated::class,
\Adldap\Laravel\Events\Authenticating::class => \Adldap\Laravel\Listeners\LogAuthentication::class,
\Adldap\Laravel\Events\AuthenticationFailed::class => \Adldap\Laravel\Listeners\LogAuthenticationFailure::class,
\Adldap\Laravel\Events\AuthenticationRejected::class => \Adldap\Laravel\Listeners\LogAuthenticationRejection::class,
\Adldap\Laravel\Events\AuthenticationSuccessful::class => \Adldap\Laravel\Listeners\LogAuthenticationSuccess::class,
\Adldap\Laravel\Events\DiscoveredWithCredentials::class => \Adldap\Laravel\Listeners\LogDiscovery::class,
\Adldap\Laravel\Events\AuthenticatedWithWindows::class => \Adldap\Laravel\Listeners\LogWindowsAuth::class,
\Adldap\Laravel\Events\AuthenticatedModelTrashed::class => \Adldap\Laravel\Listeners\LogTrashedModel::class,
],
],
];
我在谷歌搜索“Adldap2 laravel更改密码”时发现了一个例子
如果您想重置密码,那么看起来应该可以:
$user->setPassword("correcthorsebatterystaple");
$user->save();
如果您想知道下面发生了什么,或者不使用Adldap2 laravel如何进行:
该属性为unicodePwd
。您可以“更改”密码,也可以“重置”密码
更改密码需要知道旧密码。这是用户自己会做的
重置密码需要对帐户具有“重置密码”权限,这通常授予管理帐户
这本书告诉你如何做到这两个。对于“更改”,您将在同一请求中发送一条使用旧密码的删除指令和一条使用新密码的添加指令
对于重置,发送一条替换指令
在这两种情况下,密码都必须以特定格式发送
“ldap\u modify\u batch”的PHP文档
在ldap\u mod\u replace
的文档页面上,显示了如何重置密码。我在谷歌搜索“Adldap2 laravel更改密码”时找到了一个示例
$user = Adldap::users()->find('jdoe');
if ($user instanceof Adldap\Models\User) {
$oldPassword = 'password123';
$newPassword = 'correcthorsebatterystaple';
$user->changePassword($oldPassword, $newPassword);
}
如果您想重置密码,那么看起来应该可以:
$user->setPassword("correcthorsebatterystaple");
$user->save();
如果您想知道下面发生了什么,或者不使用Adldap2 laravel如何进行:
该属性为unicodePwd
。您可以“更改”密码,也可以“重置”密码
更改密码需要知道旧密码。这是用户自己会做的
重置密码需要对帐户具有“重置密码”权限,这通常授予管理帐户
这本书告诉你如何做到这两个。对于“更改”,您将在同一请求中发送一条使用旧密码的删除指令和一条使用新密码的添加指令
对于重置,发送一条替换指令
在这两种情况下,密码都必须以特定格式发送
“ldap\u modify\u batch”的PHP文档
在ldap\u mod\u replace
的文档页面上,显示了如何重置密码。我试图在不知道旧密码的情况下强制重置密码。通过使用adldap2 laravel软件包。似乎您可以只使用$user->setPassword
。我将其添加到我的答案中。通过使用$user->setPassword,我收到了以下错误“Method Adldap\Query\Collection::setPassword不存在”。可能您的$user
变量不是Adldap\Models\user
,因为我使用的是应用/用户模式,所以有什么解决方案吗?我试图在不知道旧密码的情况下强制重置。通过使用adldap2 laravel软件包。似乎您可以只使用$user->setPassword
。我将此添加到我的答案中。通过使用$user->setPassword,我收到了以下错误“Method Adldap\Query\Collection::setPassword不存在”。可能您的$user
变量不是Adldap\Models\user
,因为我使用的是应用程序/用户模型,所以有任何解决方案吗?您标记了Active Directory和OpenLDAP。您实际使用的是哪一个?我尝试同时使用这两个,因为这两个都包含用户信息,如果更改LDAP密码,我必须强制重置AD密码。我想您必须知道您使用的是哪一个。例如,Active Directory不使用uid
属性(它存在,只是没有使用)。用于登录的用户名是sAMAccountName
属性。如果您针对Active Directory进行测试,这可能是问题的一部分。您同时标记了Active Directory和OpenLDAP。您实际使用的是哪一个?我尝试同时使用这两个,因为这两个都包含用户信息,如果更改LDAP密码,我必须强制重置AD密码。我想您必须知道您使用的是哪一个。例如,Active Directory不使用uid
属性(它存在,只是没有使用)。用于登录的用户名是sAMAccountName
属性。如果您正在对Active Directory进行测试,这可能是问题的一部分。
$user = Adldap::users()->find('jdoe');
if ($user instanceof Adldap\Models\User) {
$oldPassword = 'password123';
$newPassword = 'correcthorsebatterystaple';
$user->changePassword($oldPassword, $newPassword);
}