通过来自 Extbase 的 PHP API 调用验证 FrontendUser

Authenticatee FrontendUser via PHP API call from Extbase

首先我使用的是 TYPO3 8.7 版。

我当前面临的问题是存储在给定页面(在本例中为 pid 168)上的 FrontendUser (fe_user) 的身份验证。

显然我正在尝试使用移动应用程序发送的给定凭据对用户进行身份验证。我能够解析用户数据并执行身份验证:

// plain-text password
$password = 'XXX';
// salted user password hash
$saltedPassword = 'YYY';
// keeps status if plain-text password matches given salted user password hash
$success = FALSE;

if (\TYPO3\CMS\Saltedpasswords\Utility\SaltedPasswordsUtility::isUsageEnabled('FE')) {
        $objSalt = \TYPO3\CMS\Saltedpasswords\Salt\SaltFactory::getSaltingInstance($saltedPassword);
        if (is_object($objSalt)) {
                $success = $objSalt->checkPassword($password, $saltedPassword);
        }
}

在调试此代码片段时,我识别出用户通过请求发送的密码,每次我重试此请求时都会使用给定的 Salt 算法更改加密。如果密码不断更改,我不确定如何获得正确的身份验证。

$objSalt对象包含正确的哈希方法($pbkdf2-sha256000),存储在数据库中的密码以相同的前缀开头,但实际负载不同。

那么确切的问题是什么,或者我在上面的代码中缺少什么来完成身份验证?

感谢您的帮助

BR,

马丁

the password sent by the user via Request, which gets encrypted with the given Salt algorithm change every time i retry this request

是的,那是因为盐每次都变了。

您应该使用以下方法检索加盐实例:

$instance = \TYPO3\CMS\Saltedpasswords\Salt\SaltFactory::getSaltingInstance($user['password']);