Spec-Zone.ru › CakePHP 4.2

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.

Пространство имён: Cake\Auth
См.: 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\Query

authenticate() 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|false

configShallow() 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 необязательно

Значение для установки.

Возвращает

$this

generateNonce() protected

generateNonce(): string

Генерирует значение nonce, которое проверяется в будущих запросах.

Возвращает

string

generateResponseHash() public

generateResponseHash(array $digest, string $password, string $method): string

Генерирует хэш ответа для заданного массива digest.

Параметры

array $digest

Информация о digest, содержащая данные из DigestAuthenticate::parseAuthData().

string $password

Пароль хэша digest, сгенерированный с помощью DigestAuthenticate::password()

string $method

Метод запроса

Возвращает

string

getConfig() 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 необязательно

Возвращаемое значение, когда ключ не существует.

Возвращает

mixed

getConfigOrFail() public

getConfigOrFail(string $key): mixed

Возвращает конфигурацию для этого ключа.

Значение конфигурации для этого ключа должно существовать, оно никогда не может быть null.

Параметры

string $key

Ключ для получения.

Возвращает

mixed

Выбрасывает

InvalidArgumentException

getTableLocator() public

getTableLocator(): Cake\ORM\Locator\LocatorInterface

Получает локатор таблицы.

Возвращает

Cake\ORM\Locator\LocatorInterface

getUser() public

getUser(Cake\Http\ServerRequest $request): array|false

Получает пользователя на основе информации в запросе. Используется для аутентификации без cookie для бессостоятельных клиентов.

Параметры

Cake\Http\ServerRequest $request

Объект запроса.

Возвращает

array|false

implementedEvents() public

implementedEvents(): array

Возвращает список всех событий, на которые будет подписываться этот класс аутентификации.

Класс аутентификации может подписываться на следующие события, генерируемые AuthComponent:

  • Auth.afterIdentify - Срабатывает после идентификации пользователя с помощью одного из настроенных классов аутентификации. Функция обратного вызова должна иметь сигнатуру, подобную afterIdentify(EventInterface $event, array $user), когда $user — идентифицированная запись пользователя.

  • Auth.logout - Срабатывает при вызове AuthComponent::logout(). Функция обратного вызова должна иметь сигнатуру, подобную logout(EventInterface $event, array $user), где $user — пользователь, который собирается выйти.

Возвращает

array

loginHeaders() public

loginHeaders(Cake\Http\ServerRequest $request): string[]

Генерирует заголовки входа.

Параметры

Cake\Http\ServerRequest $request

Объект запроса.

Возвращает

string[]

needsPasswordRehash() public

needsPasswordRehash(): bool

Возвращает значение, указывающее, требуется ли повторное хеширование пароля пользователя, вошедшего в систему, с помощью другого алгоритма.

Возвращает

bool

parseAuthData() public

parseAuthData(string $digest): array|null

Парсит заголовки аутентификации digest и разделяет их.

Параметры

string $digest

Исходные заголовки аутентификации digest.

Возвращает

array|null

password() public static

password(string $username, string $password, string $realm): string

Создаёт хеш пароля аутентификации digest для хранения.

Параметры

string $username

Имя пользователя, используемое в хеше digest.

string $password

Незахешированный пароль для создания хеша digest.

string $realm

Домен, для которого предназначен пароль.

Возвращает

string

passwordHasher() 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.

Возвращает

$this

unauthenticated() 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\UnauthorizedException

validNonce() 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API