Class DigestAuthenticate
Адаптер аутентификации Digest для AuthComponent.
Обеспечивает поддержку HTTP-аутентификации Digest для AuthComponent.
Использование аутентификации Digest
Загрузите AuthComponent в initialize() вашего контроллера и добавьте 'Digest' в ключ 'authenticate'
$this->loadComponent('Auth', [
'authenticate' => ['Digest'],
'storage' => 'Memory',
'unauthorizedRedirect' => false,
]); Вы должны установить storage на Memory, чтобы предотвратить отправку CakePHP куки сессии клиенту.
Вы должны установить 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Конфигурация во время выполнения
- $_configInitialized protected
boolУказывает, была ли конфигурация свойства уже настроена по умолчанию
- $_defaultConfig protected
arrayКонфигурация по умолчанию для этого объекта.
- $_needsPasswordRehash protected
boolТребуется ли повторная хеширование пароля пользователя, аутентифицированного этим классом, с использованием другого алгоритма.
- $_passwordHasher protected
Cake\Auth\AbstractPasswordHasher|nullЭкземпляр хешера паролей.
- $_registry protected
Cake\Controller\ComponentRegistryРегистр компонентов, используемый для получения других компонентов.
- $_tableLocator protected
Cake\ORM\Locator\LocatorInterface|nullЭкземпляр локатора таблиц
Краткое описание методов
-
__construct() public
Конструктор
-
_configDelete() protected
Удаляет один ключ конфигурации.
-
_configRead() protected
Читает ключ конфигурации.
-
_configWrite() protected
Записывает ключ конфигурации.
-
_findUser() protected
Находит запись пользователя, используя предоставленное имя пользователя и пароль.
-
_getDigest() protected
Получает заголовки digest из запроса/окружения.
-
_query() protected
Получить объект запроса для извлечения пользователя из базы данных.
-
authenticate() public
Проверка подлинности пользователя с помощью HTTP-аутентификации. Использует настроенную модель User и пытается выполнить вход с использованием HTTP-аутентификации.
-
configShallow() public
Объединяет предоставленную конфигурацию с существующей конфигурацией. В отличие от
config(), которое выполняет рекурсивное объединение для вложенных ключей, этот метод выполняет простое объединение. -
generateNonce() protected
Генерирует значение nonce, которое будет валидироваться в будущих запросах.
-
generateResponseHash() public
Генерирует хэш ответа для заданного массива digest.
-
getConfig() public
Возвращает конфигурацию.
-
getConfigOrFail() public
Возвращает конфигурацию для данного ключа.
-
getTableLocator() public
Получает локатор таблиц.
-
getUser() public
Получает пользователя на основе информации в запросе. Используется для бесклеточной аутентификации бессостоятельных клиентов.
-
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 $config = [])
Конструктор
Помимо ключей, указанных в BaseAuthenticate::$_defaultConfig, DigestAuthenticate использует следующие дополнительные ключи:
-
secretСекрет, используемый для проверки nonce. По умолчанию равен Security::getSalt(). -
realmОбласть, для которой предназначена аутентификация. По умолчанию — имя сервера. -
qopПо умолчанию 'auth', в настоящее время другие значения не поддерживаются. -
opaqueСтрока, которая должна быть возвращена клиентами без изменений. По умолчаниюmd5($config['realm']) -
nonceLifetimeКоличество секунд, в течение которых nonce действительны. По умолчанию 300.
Параметры
-
Cake\Controller\ComponentRegistry$registry Реестр компонентов, используемый в этом запросе.
-
array$config необязательно Массив конфигурации для использования.
_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(string|array $key, mixed $value, bool|string $merge = false): void
Записывает ключ конфигурации.
Параметры
-
string|array$key Ключ, в который нужно записать.
-
mixed$value Значение для записи.
-
bool|string$merge необязательно True для рекурсивного объединения, 'shallow' для простого объединения, false для перезаписи, по умолчанию false.
Возвращает
voidВыбрасывает
Cake\Core\Exception\CakeExceptionесли пытаетесь перезаписать существующую конфигурацию
_findUser() protected
_findUser(string $username, string|null $password = null): array|false
Поиск записи пользователя по имени пользователя и паролю.
Вводимые пароли будут хешироваться, даже если пользователь не существует. Это помогает уменьшить атаки с подсчётом времени, направленные на поиск допустимых имён пользователей.
Параметры
-
string$username Имя пользователя/идентификатор.
-
string|null$password необязательно Пароль. Если не предоставлен, проверка пароля пропущена, и результат поиска возвращается.
Возвращает
array|false_getDigest() protected
_getDigest(Cake\Http\ServerRequest $request): array|null
Получает заголовки digest из запроса/окружения.
Параметры
-
Cake\Http\ServerRequest$request Объект запроса.
Возвращает
array|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|false
Аутентификация пользователя с помощью HTTP auth. Использует настроенную модель пользователя и пытается выполнить вход с помощью HTTP auth.
Параметры
-
Cake\Http\ServerRequest$request Запрос для аутентификации.
-
Cake\Http\Response$response Ответ, к которому нужно добавить заголовки.
Возвращает
array|falseconfigShallow() public
configShallow(string|array $key, mixed|null $value = null): $this
Объединить предоставленную конфигурацию с существующей. В отличие от config(), которая выполняет рекурсивное объединение для вложенных ключей, этот метод выполняет простое объединение.
Установка конкретного значения:
$this->configShallow('key', $value); Установка вложенного значения:
$this->configShallow('some.nested.key', $value); Обновление нескольких параметров конфигурации одновременно:
$this->configShallow(['one' => 'value', 'another' => 'value']);
Параметры
-
string|array$key Ключ для установки или массив конфигураций.
-
mixed|null$value необязательно Значение для установки.
Возвращает
$thisgenerateNonce() protected
generateNonce(): string
Генерирует значение nonce, которое проверяется в будущих запросах.
Возвращает
stringgenerateResponseHash() public
generateResponseHash(array $digest, string $password, string $method): string
Генерирует хэш ответа для заданного массива digest.
Параметры
-
array$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 необязательно Ключ для получения или null для всей конфигурации.
-
mixed$default необязательно Возвращаемое значение, когда ключ не существует.
Возвращает
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|false
Получает пользователя на основе информации в запросе. Используется для аутентификации без cookie для бессостоятельных клиентов.
Параметры
-
Cake\Http\ServerRequest$request Объект запроса.
Возвращает
array|falseimplementedEvents() public
implementedEvents(): array
Возвращает список всех событий, на которые будет подписываться этот класс аутентификации.
Класс аутентификации может подписываться на следующие события, генерируемые AuthComponent:
-
Auth.afterIdentify- Срабатывает после идентификации пользователя с помощью одного из настроенных классов аутентификации. Функция обратного вызова должна иметь сигнатуру, подобнуюafterIdentify(EventInterface $event, array $user), когда$user— идентифицированная запись пользователя. -
Auth.logout- Срабатывает при вызове AuthComponent::logout(). Функция обратного вызова должна иметь сигнатуру, подобнуюlogout(EventInterface $event, array $user), где$user— пользователь, который собирается выйти.
Возвращает
arrayloginHeaders() public
loginHeaders(Cake\Http\ServerRequest $request): string[]
Генерирует заголовки входа.
Параметры
-
Cake\Http\ServerRequest$request Объект запроса.
Возвращает
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(string|array $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']);
Параметры
-
string|array$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 - Без действий. Компонент Auth должен вернуть соответствующий ответ.
- Cake\Http\Response - Объект ответа, который заставит компонент Auth просто вернуть этот ответ.
Параметры
-
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
Конфигурация в режиме выполнения.
Тип
array$_configInitialized protected
Указывает, была ли конфигурация свойства уже настроена с настройками по умолчанию.
Тип
bool$_defaultConfig protected
Настройки по умолчанию для этого объекта.
-
fieldsПоля, используемые для идентификации пользователя. -
userModelАльяс таблицы пользователей, по умолчанию Users. -
finderМетод поиска для извлечения записи пользователя. По умолчанию «все». Вы можете установить имя метода поиска как строку или массив, где ключ — имя метода поиска, а значение — массив, передаваемый вTable::find()параметры. Например: ['finderName' => ['some_finder_option' => 'some_value']] -
passwordHasherКласс хеширования паролей. Может быть строкой, указывающей имя класса, или массивом, содержащимclassNameключ; все остальные ключи будут переданы как конфигурация в класс. По умолчанию «Default».
Тип
array$_needsPasswordRehash protected
Указывает, требуется ли повторное хеширование пароля пользователя, аутентифицированного этим классом, с помощью другого алгоритма.
Тип
bool$_passwordHasher protected
Экземпляр хеширования паролей.
Тип
Cake\Auth\AbstractPasswordHasher|null$_registry protected
Регистр компонентов, используемый для получения других компонентов.
Тип
Cake\Controller\ComponentRegistry$_tableLocator protected
Экземпляр локатора таблиц.
Тип
Cake\ORM\Locator\LocatorInterface|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.2/class-Cake.Auth.DigestAuthenticate.html