kcone87/yii2-ldap-auth

一个用于处理Yii 2应用程序中LDAP认证的简单库。

安装次数: 9

依赖者: 0

建议者: 0

安全: 0

星标: 2

关注者: 1

分支: 0

开放问题: 0

类型:yii2-extension

dev-main 2022-07-07 06:19 UTC

This package is auto-updated.

Last update: 2024-09-08 22:38:24 UTC


README

这是一个用于处理Yii 2应用程序中LDAP认证的简单扩展。

本扩展适用于仅依赖LDAP认证的应用程序,不支持访问令牌。

安装

php composer.phar require --prefer-dist kcone87/yii2-ldap-auth "*"

或者

"kcone87/yii2-ldap-auth": "*"

将以下内容添加到您的composer.json文件的require部分。

要始终使用来自Github的最新版本,在您的composer.json中,将此仓库添加到repositories部分。

{
    ...
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/kcone87/yii2-ldap-auth"
        }
    ],
}

配置示例及使用场景

yii2-app-basic为例

在您的配置文件中配置组件并更改用户身份类

'components' => [
    ...
    'ldapAuth' => [
        'class' => '\kcone87\Yii2LdapAuth\LdapAuth',
        'host' => 'your-ldap-hostname',
        'baseDn' => 'dc=work,dc=group',
        'searchUserName' => '<username for a search user>',
        'searchUserPassword' => '<password for a search user>',
        'userDomain' => '<domain to search user from>',//user domain
        // optional parameters and their default values
        'ldapVersion' => 3,             // LDAP version
        'protocol' => ['ldap://', 'ldaps://'],       // Protocol to use           
        'followReferrals' => false,     // If connector should follow referrals
        'port' => 636,                  // Port to connect to
        'loginAttribute' => 'uid',      // Identifying user attribute to look up for
        'ldapObjectClass' => 'person',  // Class of user objects to look up for
        'timeout' => 10,                // Operation timeout, seconds
        'connectTimeout' => 5,          // Connect timeout, seconds
    ],
    ...
    
    'user' => [
        'identityClass' => '\kcone87\Yii2LdapAuth\Model\LdapUser',
    ],
    ...
]

更新LoginForm类中的方法

use kcone87\Yii2LdapAuth\Model\LdapUser;

...

public function validatePassword($attribute, $params)
{
    if (!$this->hasErrors()) {
        $user = LdapUser::findIdentity($this->username);

        if (!$user || !Yii::$app->ldapAuth->authenticate($user->getDn(), $this->password)) {
            $this->addError($attribute, 'Incorrect username or password.');
        }
    }
    
    //if user is a member of a group
    //Yii::$app->ldapAuth->authenticate($this->username, $user->getDn(), $this->password, $userGroup)//check user
}

...

public function login()
{
    if ($this->validate()) {
        return Yii::$app->user->login(
            LdapUser::findIdentity($this->username),
            $this->rememberMe
                ? 3600*24*30 : 0
        );
    }
    return false;
}

现在您可以使用LDAP凭证登录到您的应用程序。