如何使用Adldap2-laravel软件包更改AD用户密码?

哈兹格·阿瑟拉夫(Haziq Asyraff)

我想更改AD中用户的密码,因为AD中没有密码的属性。

当前运行带有Adldap2-laravel软件包的laravel框架,以便管理ADLDAP操作。

这是我的ldap_auth.php

<?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,

        ],
    ],

];

这是我的LdapController.php,其中包含用于重置密码的功能

public function resetPassword(Request $req)
    {
        $req->validate([
            'userid' => 'required',
            'password' => 'required|min:6|confirmed'
        ]);
        $userLdap = Adldap::search()->where('uid', $req->userid)->firstOrFail();
        $newPassword = "{SHA}" . base64_encode(pack("H*", sha1($req->password)));
        $res = $userLdap->update([
            'userpassword' => $newPassword
        ]);

        //Force change AD Password
        // $adPassword = str_replace("\n", "", shell_exec("echo -n '\"" . $req->password . "\"' | recode latin1..utf-16le/base64"));
        // $provider = Adldap\Models\User::connect('ad');
        // $dn = $provider->search()->where('cn', $req->userid)->get();
        // $res = $dn->setPassword($adPassword);

        if ($res) {
            return back()->withSuccess('<strong>Success!</strong> Your password has been changed');
        } else {
            return back()->withErrors('<strong>Failed!</strong> Your password was unable to changed');
        }
    }

不幸的是$ res = $ dn-> setPassword($ adPassword); 返回错误“方法Adldap \ Query \ Collection :: setPassword不存在。”

加布里埃尔·卢西(Gabriel Luci)

Google上搜索“ 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您可以“更改”密码或“重置”密码。

更改密码需要知道旧密码。这就是用户自己做的事情。

重置密码需要对该帐户具有“重置密码”权限,该权限通常授予管理帐户。

文档unicodePwd告诉您如何执行这两种操作。对于“更改”,您将在同一请求中发送带有旧密码的删除指令和带有新密码的添加指令。

对于重置,您发送一条替换指令。

在两种情况下,都必须以特定格式发送密码。

PHP的“ ldap_modify_batch”文档显示了如何更改密码的示例

在的文档页面上ldap_mod_replace有一条注释,向您显示如何重设密码。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无效的凭证adldap2 / adldap2-laravel软件包

来自分类Dev

adldap2 laravel 它只返回“假”

来自分类Dev

安装adldap2 / adldap2-laravel时Composer无法找到依赖项

来自分类Dev

安装adldap2 / adldap2-laravel时Composer无法找到依赖项

来自分类Dev

在Sentry 2软件包中使用Laravel 4用户模型关系的正确方法

来自分类Dev

如何更改python软件包目录

来自分类Dev

如何更改R的软件包名称

来自分类Dev

如何更改python软件包目录

来自分类Dev

如何更改另一个用户的PPA中可用的软件包的版本?

来自分类Dev

Laravel使用Composer删除软件包

来自分类Dev

使用带Debian的zip软件包和密码

来自分类Dev

用户如何使用Chocolatey安装多个软件包?

来自分类Dev

如何使用用户名和密码将来自GitHub的私有软件包添加到pubspec.yaml?

来自分类Dev

如何通知NPM软件包版本更新给用户?

来自分类Dev

Debian软件包应如何创建用户帐户?

来自分类Dev

使用Yum仅为我的用户安装软件包

来自分类Dev

在Laravel 3上使用Laravel 4软件包

来自分类Dev

Cordova + Ionic框架-如何安全更改软件包名称?

来自分类Dev

作曲家-如何跟踪对软件包的更改

来自分类Dev

如何更改Android应用程序的软件包目录

来自分类Dev

如何更改图形中点的颜色?ggpubr软件包

来自分类Dev

如何更改pnpm在哪里安装全局软件包?

来自分类Dev

如何更改Android应用程序的软件包目录

来自分类Dev

如何测试对已安装软件包的更改

来自分类Dev

如何更改Chocolatey软件包的$ url进行安装

来自分类Dev

要求用户“扩展”我的Laravel 4软件包以使用它是一种好习惯吗?

来自分类Dev

流星使用冒号更改软件包名称以适合Windows

来自分类Dev

在安装软件包(尤其是带有图形用户界面的软件包)时,如何确定适合您的发行版的软件包?

来自分类Dev

Sentry 2-创建组权限-Laravel软件包

Related 相关文章

  1. 1

    无效的凭证adldap2 / adldap2-laravel软件包

  2. 2

    adldap2 laravel 它只返回“假”

  3. 3

    安装adldap2 / adldap2-laravel时Composer无法找到依赖项

  4. 4

    安装adldap2 / adldap2-laravel时Composer无法找到依赖项

  5. 5

    在Sentry 2软件包中使用Laravel 4用户模型关系的正确方法

  6. 6

    如何更改python软件包目录

  7. 7

    如何更改R的软件包名称

  8. 8

    如何更改python软件包目录

  9. 9

    如何更改另一个用户的PPA中可用的软件包的版本?

  10. 10

    Laravel使用Composer删除软件包

  11. 11

    使用带Debian的zip软件包和密码

  12. 12

    用户如何使用Chocolatey安装多个软件包?

  13. 13

    如何使用用户名和密码将来自GitHub的私有软件包添加到pubspec.yaml?

  14. 14

    如何通知NPM软件包版本更新给用户?

  15. 15

    Debian软件包应如何创建用户帐户?

  16. 16

    使用Yum仅为我的用户安装软件包

  17. 17

    在Laravel 3上使用Laravel 4软件包

  18. 18

    Cordova + Ionic框架-如何安全更改软件包名称?

  19. 19

    作曲家-如何跟踪对软件包的更改

  20. 20

    如何更改Android应用程序的软件包目录

  21. 21

    如何更改图形中点的颜色?ggpubr软件包

  22. 22

    如何更改pnpm在哪里安装全局软件包?

  23. 23

    如何更改Android应用程序的软件包目录

  24. 24

    如何测试对已安装软件包的更改

  25. 25

    如何更改Chocolatey软件包的$ url进行安装

  26. 26

    要求用户“扩展”我的Laravel 4软件包以使用它是一种好习惯吗?

  27. 27

    流星使用冒号更改软件包名称以适合Windows

  28. 28

    在安装软件包(尤其是带有图形用户界面的软件包)时,如何确定适合您的发行版的软件包?

  29. 29

    Sentry 2-创建组权限-Laravel软件包

热门标签

归档