Класс DigestAuthenticate
Адаптер аутентификации Digest для AuthComponent.
Обеспечивает поддержку HTTP аутентификации Digest для AuthComponent.
Использование аутентификации Digest
Загрузите AuthComponent в initialize() вашего контроллера и добавьте 'Digest' в ключ 'authenticate'
$this->loadComponent('Auth', [
'authenticate' => ['Digest'],
'storage' => 'Memory',
'unauthorizedRedirect' => false,
]); Вы должны установить storage на Memory, чтобы предотвратить отправку CakePHP cookie сессии клиенту.
Вы должны установить unauthorizedRedirect на false. Это заставит AuthComponent выбрасывать исключение ForbiddenException вместо перенаправления на другую страницу.
Поскольку HTTP аутентификация Digest бессостоятельна, вам не нужно вызывать setUser() в вашем контроллере. Проверка учетных данных пользователя будет выполняться при каждом запросе. Если действительные учетные данные не предоставлены, этот поставщик аутентификации отправит необходимые заголовки аутентификации, что запустит диалог входа в браузере/клиенте.
Генерация паролей, совместимых с аутентификацией Digest.
DigestAuthenticate требует специального хэша пароля, соответствующего RFC2617. Вы можете сгенерировать этот пароль, используя DigestAuthenticate::password()
$digestPass = DigestAuthenticate::password($username, $password, env('SERVER_NAME')); Если вы хотите использовать аутентификацию digest наряду с другими методами аутентификации, рекомендуется хранить аутентификацию digest отдельно. Например, User.digest_pass можно использовать для пароля digest, а User.password — для хранения хэша пароля для использования с другими методами, такими как Basic или Form.
См.: https://book.cakephp.org/4/ru/controllers/components/authentication.html
Краткое описание свойств
- $_config protected
array<string, mixed>Конфигурация во время выполнения
- $_configInitialized protected
boolУказывает, была ли конфигурация свойства уже настроена по умолчанию
- $_defaultConfig protected
array<string, mixed>Конфигурация по умолчанию для этого объекта.
- $_needsPasswordRehash protected
boolТребуется ли перехеширование пароля пользователя, аутентифицированного этим классом, с помощью другого алгоритма.
- $_passwordHasher protected
Cake\Auth\AbstractPasswordHasher|nullЭкземпляр хешера паролей.
- $_registry protected
Cake\Controller\ComponentRegistryРегистр компонентов, используемый для получения других компонентов.
- $_tableLocator protected
Cake\ORM\Locator\LocatorInterface|nullЭкземпляр локатора таблиц
- $defaultTable protected
string|nullПсевдоним таблицы по умолчанию для этого объекта.
Краткое описание методов
-
__construct() public
Конструктор
-
_configDelete() protected
Удаляет один ключ конфигурации.
-
_configRead() protected
Считывает ключ конфигурации.
-
_configWrite() protected
Записывает ключ конфигурации.
-
_findUser() protected
Находит запись пользователя, используя предоставленное имя пользователя и пароль.
-
_getDigest() protected
Получает заголовки digest из запроса/окружения.
-
_query() protected
Получить объект запроса для извлечения пользователя из базы данных.
-
authenticate() public
Аутентифицирует пользователя с помощью HTTP аутентификации. Будет использовать настроенную модель пользователя и попытается выполнить вход с помощью HTTP аутентификации.
-
configShallow() public
Объединить предоставленную конфигурацию с существующей конфигурацией. В отличие от
config(), который выполняет рекурсивное объединение для вложенных ключей, этот метод выполняет простое объединение. -
fetchTable() public
Удобный метод для получения экземпляра таблицы.
-
generateNonce() protected
Генерирует значение nonce, которое будет валидироваться в последующих запросах.
-
generateResponseHash() public
Генерирует хэш ответа для заданного массива digest.
-
getConfig() public
Возвращает конфигурацию.
-
getConfigOrFail() public
Возвращает конфигурацию для данного ключа.
-
getTableLocator() public
Получает локатор таблиц.
-
getUser() public
Получает пользователя на основе информации в запросе. Используется для аутентификации без cookie для бессостоятельных клиентов.
-
implementedEvents() public
Возвращает список всех событий, на которые будет подключаться этот класс аутентификации.
-
loginHeaders() public
Генерирует заголовки входа
-
needsPasswordRehash() public
Возвращает, требует ли хранящийся в репозитории пароль авторизованного пользователя перехеширования с помощью другого алгоритма.
-
parseAuthData() public
Разбирает заголовки аутентификации digest и разделяет их.
-
password() public static
Создаёт хэш пароля аутентификации digest для хранения
-
passwordHasher() public
Возвращает объект хеширования паролей
-
setConfig() public
Устанавливает конфигурацию.
-
setTableLocator() public
Устанавливает локатор таблиц.
-
unauthenticated() public
Обрабатывает попытку доступа без аутентификации, отправляя соответствующие заголовки входа.
-
validNonce() protected
Проверяет nonce на валидность и истечение срока действия.
Подробное описание методов
__construct() public
__construct(Cake\Controller\ComponentRegistry $registry, array<string, mixed> $config = [])
Конструктор
Помимо ключей, указанных в BaseAuthenticate::$_defaultConfig, DigestAuthenticate использует следующие дополнительные ключи:
-
secretСекрет, используемый для проверки nonce. По умолчанию равен Security::getSalt(). -
realmОбласть, для которой предназначена аутентификация. По умолчанию равно имени сервера. -
qopПо умолчанию 'auth', в настоящее время другие значения не поддерживаются. -
opaqueСтрока, которая должна возвращаться клиентами без изменений. По умолчаниюmd5($config['realm']) -
nonceLifetimeКоличество секунд, в течение которых nonce действительны. По умолчанию 300.
Параметры
-
Cake\Controller\ComponentRegistry$registry Регистр компонентов, используемый в этом запросе.
-
array<string, mixed>$config optional Массив конфигурации для использования.
_configDelete() protected
_configDelete(string $key): void
Удаляет один ключ конфигурации.
Параметры
-
string$key Ключ для удаления.
Возвращает
voidВыбрасывает
Cake\Core\Exception\CakeExceptionесли происходит попытка перезаписи существующей конфигурации
_configRead() protected
_configRead(string|null $key): mixed
Читает значение ключа конфигурации.
Параметры
-
string|null$key Ключ для чтения.
Возвращает
mixed_configWrite() protected
_configWrite(array<string, mixed>|string $key, mixed $value, string|bool $merge = false): void
Записывает значение ключа конфигурации.
Параметры
-
array<string, mixed>|string$key Ключ для записи.
-
mixed$value Значение для записи.
-
string|bool$merge optional Истинно для рекурсивного объединения, 'shallow' для простого объединения, ложно для перезаписи, по умолчанию ложно.
Возвращает
voidВыбрасывает
Cake\Core\Exception\CakeExceptionесли происходит попытка перезаписи существующей конфигурации
_findUser() protected
_findUser(string $username, string|null $password = null): array<string, mixed>|false
Ищет запись пользователя по имени пользователя и паролю.
Вводимые пароли будут хэшироваться даже если пользователь не существует. Это помогает смягчить атаки с временными задержками, которые пытаются найти допустимые имена пользователей.
Параметры
-
string$username Имя пользователя/идентификатор.
-
string|null$password optional Пароль, если не указан, проверка пароля пропускается, и возвращается результат поиска.
Возвращает
array<string, mixed>|false_getDigest() protected
_getDigest(Cake\Http\ServerRequest $request): array<string, mixed>|null
Получает заголовки digest из запроса/окружения.
Параметры
-
Cake\Http\ServerRequest$request Объект запроса.
Возвращает
array<string, mixed>|null_query() protected
_query(string $username): Cake\ORM\Query
Получение объекта запроса для извлечения пользователя из базы данных.
Параметры
-
string$username Имя пользователя/идентификатор.
Возвращает
Cake\ORM\Queryauthenticate() public
authenticate(Cake\Http\ServerRequest $request, Cake\Http\Response $response): array<string, mixed>|false
Аутентификация пользователя с использованием HTTP-аутентификации. Использует настроенную модель User и пытается выполнить вход с использованием HTTP-аутентификации.
Параметры
-
Cake\Http\ServerRequest$request Запрос для аутентификации.
-
Cake\Http\Response$response Ответ для добавления заголовков.
Возвращает
array<string, mixed>|falseconfigShallow() public
configShallow(array<string, mixed>|string $key, mixed|null $value = null): $this
Объединяет предоставленную конфигурацию с существующей. В отличие от config(), которая выполняет рекурсивное объединение для вложенных ключей, этот метод выполняет простое объединение.
Установка конкретного значения:
$this->configShallow('key', $value); Установка вложенного значения:
$this->configShallow('some.nested.key', $value); Обновление нескольких параметров конфигурации одновременно:
$this->configShallow(['one' => 'value', 'another' => 'value']);
Параметры
-
array<string, mixed>|string$key Ключ для установки или весь массив конфигурации.
-
mixed|null$value optional Значение для установки.
Возвращает
$thisfetchTable() public
fetchTable(string|null $alias = null, array<string, mixed> $options = []): Cake\ORM\Table
Удобный метод для получения экземпляра таблицы.
Параметры
-
string|null$alias optional Имя псевдонима, которое вы хотите получить. Должно быть в формате CamelCase. Если
nullиспользуется значение свойства $defaultTable.-
array<string, mixed>$options optional Параметры, с которыми вы хотите создать таблицу. Если таблица уже загружена, параметры реестра будут проигнорированы.
Возвращает
Cake\ORM\TableВыбрасывает
Cake\Core\Exception\CakeExceptionЕсли аргумент `$alias` и свойство `$defaultTable` оба равны `null`.
См. также
generateNonce() protected
generateNonce(): string
Генерирует значение nonce, которое проверяется в будущих запросах.
Возвращает
stringgenerateResponseHash() public
generateResponseHash(array<string, mixed> $digest, string $password, string $method): string
Генерирует хэш ответа для заданного массива digest.
Параметры
-
array<string, mixed>$digest Информация о digest, содержащая данные из DigestAuthenticate::parseAuthData().
-
string$password Пароль-хэш digest, сгенерированный с помощью DigestAuthenticate::password()
-
string$method Метод запроса
Возвращает
stringgetConfig() public
getConfig(string|null $key = null, mixed $default = null): mixed
Возвращает конфигурацию.
Использование
Чтение всей конфигурации:
$this->getConfig();
Чтение определенного значения:
$this->getConfig('key'); Чтение вложенного значения:
$this->getConfig('some.nested.key'); Чтение со значением по умолчанию:
$this->getConfig('some-key', 'default-value'); Параметры
-
string|null$key optional Ключ для получения или null для всей конфигурации.
-
mixed$default optional Значение по умолчанию, если ключ не существует.
Возвращает
mixedgetConfigOrFail() public
getConfigOrFail(string $key): mixed
Возвращает конфигурацию для этого конкретного ключа.
Значение конфигурации для этого ключа должно существовать, оно никогда не может быть null.
Параметры
-
string$key Ключ для получения.
Возвращает
mixedВыбрасывает
InvalidArgumentExceptiongetTableLocator() public
getTableLocator(): Cake\ORM\Locator\LocatorInterface
Получает локатор таблиц.
Возвращает
Cake\ORM\Locator\LocatorInterfacegetUser() public
getUser(Cake\Http\ServerRequest $request): array<string, mixed>|false
Получает пользователя на основе информации в запросе. Используется для аутентификации без cookie для бесклассовых клиентов.
Параметры
-
Cake\Http\ServerRequest$request Объект запроса.
Возвращает
array<string, mixed>|falseimplementedEvents() public
implementedEvents(): array<string, mixed>
Возвращает список всех событий, на которые будет подписываться этот класс аутентификации.
Класс аутентификации может подписываться на следующие события, генерируемые компонентом AuthComponent:
-
Auth.afterIdentify- Срабатывает после того, как пользователь был идентифицирован с помощью одного из настроенных классов аутентификации. Функция обратного вызова должна иметь сигнатуру, подобнуюafterIdentify(EventInterface $event, array $user), где$user- запись пользователя, который был идентифицирован. -
Auth.logout- Срабатывает при вызове AuthComponent::logout(). Функция обратного вызова должна иметь сигнатуру, подобнуюlogout(EventInterface $event, array $user), где$user- пользователь, который собирается быть разлогинен.
Возвращает
array<string, mixed>loginHeaders() public
loginHeaders(Cake\Http\ServerRequest $request): array<string, string>
Генерирует заголовки для входа.
Параметры
-
Cake\Http\ServerRequest$request Объект запроса.
Возвращает
array<string, string>needsPasswordRehash() public
needsPasswordRehash(): bool
Возвращает значение, указывающее, требуется ли перехеширование пароля, сохраненного в хранилище для авторизованного пользователя, с использованием другого алгоритма.
Возвращает
boolparseAuthData() public
parseAuthData(string $digest): array|null
Парсит заголовки аутентификации digest и разделяет их.
Параметры
-
string$digest Необработанные заголовки аутентификации digest.
Возвращает
array|nullpassword() public static
password(string $username, string $password, string $realm): string
Создаёт хэш пароля для аутентификации digest для хранения.
Параметры
-
string$username Имя пользователя для использования в хэше digest.
-
string$password Незахешированный пароль для создания хэша digest.
-
string$realm Область действия пароля.
Возвращает
stringpasswordHasher() public
passwordHasher(): Cake\Auth\AbstractPasswordHasher
Возвращает объект хеширования паролей.
Возвращает
Cake\Auth\AbstractPasswordHasherИсключения
RuntimeExceptionЕсли класс хеширования паролей не найден или не расширяет AbstractPasswordHasher
setConfig() public
setConfig(array<string, mixed>|string $key, mixed|null $value = null, bool $merge = true): $this
Устанавливает конфигурацию.
Использование
Установка конкретного значения:
$this->setConfig('key', $value); Установка вложенного значения:
$this->setConfig('some.nested.key', $value); Обновление нескольких настроек конфигурации одновременно:
$this->setConfig(['one' => 'value', 'another' => 'value']);
Параметры
-
array<string, mixed>|string$key Ключ для установки или массив настроек.
-
mixed|null$value необязательно Значение для установки.
-
bool$merge необязательно Флаг для рекурсивного слияния или перезаписи существующей конфигурации, по умолчанию true.
Возвращает
$thisИсключения
Cake\Core\Exception\CakeExceptionПри попытке установить недопустимый ключ.
setTableLocator() public
setTableLocator(Cake\ORM\Locator\LocatorInterface $tableLocator): $this
Устанавливает локатор таблиц.
Параметры
-
Cake\ORM\Locator\LocatorInterface$tableLocator Экземпляр LocatorInterface.
Возвращает
$thisunauthenticated() public
unauthenticated(Cake\Http\ServerRequest $request, Cake\Http\Response $response): Cake\Http\Response|null|void
Обрабатывает попытку доступа без аутентификации, отправляя соответствующие заголовки для входа.
- Null - Никаких действий не выполняется, AuthComponent должен вернуть соответствующий ответ.
- \Cake\Http\Response - Объект ответа, который заставит AuthComponent просто вернуть этот ответ.
Параметры
-
Cake\Http\ServerRequest$request Объект запроса.
-
Cake\Http\Response$response Объект ответа.
Возвращает
Cake\Http\Response|null|voidИсключения
Cake\Http\Exception\UnauthorizedExceptionvalidNonce() protected
validNonce(string $nonce): bool
Проверяет nonce на валидность и срок действия.
Параметры
-
string$nonce Значение nonce для проверки.
Возвращает
boolПодробное описание свойств
$_config protected
Конфигурация runtime
Тип
array<string, mixed>$_configInitialized protected
Указывает, была ли уже настроена конфигурация свойства с настройками по умолчанию.
Тип
bool$_defaultConfig protected
Конфигурация по умолчанию для данного объекта.
-
fieldsПоля, используемые для идентификации пользователя. -
userModelПсевдоним таблицы пользователей, по умолчанию Users. -
finderМетод поиска для извлечения записи пользователя. По умолчанию 'all'. Вы можете установить имя метода поиска как строку или массив, где ключ — имя метода поиска, а значение — массив, передаваемый вTable::find()опции. Например: ['finderName' => ['some_finder_option' => 'some_value']] -
passwordHasherКласс хеширования паролей. Может быть строкой, указывающей имя класса, или массивом, содержащимclassNameключ, любые другие ключи будут переданы как конфигурация классу. По умолчанию 'Default'.
Тип
array<string, mixed>$_needsPasswordRehash protected
Указывает, требуется ли перехеширование пароля для аутентифицированного пользователем в этом классе с использованием другого алгоритма.
Тип
bool$_passwordHasher protected
Экземпляр хеширования паролей.
Тип
Cake\Auth\AbstractPasswordHasher|null$_registry protected
Регистр компонентов, используемый для получения других компонентов.
Тип
Cake\Controller\ComponentRegistry$_tableLocator protected
Экземпляр локатора таблиц.
Тип
Cake\ORM\Locator\LocatorInterface|null$defaultTable protected
Псевдоним таблицы по умолчанию для данного объекта.
Тип
string|null
© 2005–present The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
https://api.cakephp.org/4.4/class-Cake.Auth.DigestAuthenticate.html