2

FreeIPA サーバーをセットアップしました。ユーザーが最初に作成されたときにパスワードが期限切れになるという問題に直面しています。したがって、新しいユーザーは、最初にログインするときに、ここで定義されているパスワードを常に設定する必要があります。しかし、私はこの機能を望んでいません。

このライブラリを使用して、FreeIPA でユーザーを作成または追加しています。

だから、私はこのようにFreeIPAに接続します-

private function getIPA()
{
    $host = env('FREEIPA_HOST', 'cloud-host-ipa.com');
    $certificate = database_path(env('FREEIPA_CERTIFICATE', 'ca.crt'));
    try {
        return new \FreeIPA\APIAccess\Main($host, $certificate);
    } catch (Exception $e) {
        throw new \ErrorException("Error {$e->getCode()}: {$e->getMessage()}");
        return false;
    }
}

private function getIPAConnection() //Ged authinticated admin IPA connection
{
    $ipa = $this->getIPA();

    try {
        $auth = $ipa->connection()->authenticate(env('FREEIPA_ADMIN_NAME', 'oc-ipa-connector'), env('FREEIPA_ADMIN_PASS', 'ADMIN_PASS'));
        if ($auth) {
            return $ipa;
        } else {
            $auth_info = $ipa->connection()->getAuthenticationInfo();
            $auth_info = implode(' ', $auth_info);
            throw new \ErrorException("\nLogin Failed : {$auth_info}");
            //return false;
        }
    } catch (Exception $e) {
        throw new \ErrorException("\nError {$e->getCode()}: {$e->getMessage()}");
        //return false;
    }
}

次に、このようにユーザーを追加します-

$ipa = $this->getIPAConnection();
try {
    $new_user_data = array(
        'givenname' =>  $givenname,
        'sn'        =>  $sn,
        'uid'       =>  $uid,
        //'userpassword' => $_POST["userpassword"],
        'mail'      =>  $mail,
        'mobile'    =>  $phone
    );

    $add_user = $ipa->user()->add($new_user_data);
    if ($add_user) {
        return true;
    }
} catch (Exception $e) {
    throw new \ErrorException("Error {$e->getCode()}: {$e->getMessage()}");
    return false;
}

このコードは正常に機能し、ユーザーが追加されます。

次に、このコードでパスワードを設定しています-

$ipa = $this->getIPAConnection();

try {
    $user_info = $ipa->user()->get($uid);

    if($user_info != false)
    {
        try {
            $new_user_data = array(
                'userpassword' => $password,
            );

            $mod_user = $ipa->user()->modify($uid, $new_user_data);

            if ($mod_user) {
                return true;
            }
            else
            {
                return false;
            }
        } catch (Exception $e) {
            throw new \ErrorException("Error {$e->getCode()}: {$e->getMessage()}");
        }
    }
} catch (Exception $e) {
    throw new \ErrorException("Error {$e->getCode()}: {$e->getMessage()}");
}

パスワードもバッチリ設定。ただし、設定したパスワードは設定直後は自動的に失効します。

ユーザーが少なくとも 1 週間はこのパスワードを保持するようにします。したがって、この機能を無効にしたいと思います。実用的な方法はありますか?

回避策を提供するために FreeIPA でこの問題を作成しましたが、問題はクローズされ、「クローズド: 修正されません」とマークされています。それで、回避策があるのだろうか?

4

1 に答える 1