Spec-Zone.ru › CakePHP 4.4

Класс 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.

Пространство имён: Cake\Auth
См.: 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 на валидность и истечение срока действия.

END_OF_DOCUMENT_MARKER

Подробное описание методов

__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\Query

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

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

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

Возвращает

$this

fetchTable() 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`.

См. также

\Cake\ORM\TableLocator::get()

generateNonce() protected

generateNonce(): string

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

Возвращает

string

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

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

Возвращает

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 optional

Ключ для получения или null для всей конфигурации.

mixed $default optional

Значение по умолчанию, если ключ не существует.

Возвращает

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<string, mixed>|false

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

Параметры

Cake\Http\ServerRequest $request

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

Возвращает

array<string, mixed>|false

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

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

Возвращает

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

Возвращает

$this

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

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

Spec-Zone.ru

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