Класс DigestAuthenticate
Адаптер аутентификации Digest для компонента Auth.
Обеспечивает поддержку 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\BaseAuthenticate реализует Cake\Event\EventListenerInterface использует Cake\Core\InstanceConfigTrait , Cake\ORM\Locator\LocatorAwareTrait
-
Cake\Auth\BasicAuthenticate
-
Cake\Auth\DigestAuthenticate
См.: https://book.cakephp.org/3.0/ru/controllers/components/authentication.html
Расположение: Auth/DigestAuthenticate.php
Унаследованные свойства
-
_defaultConfig,_needsPasswordRehash,_passwordHasher,_registry_config,_configInitialized_tableLocator
Краткое описание методов
- __construct() publicКонструктор
- _getDigest() protectedПолучение заголовков digest из запроса/окружения.
- generateNonce() protectedГенерация значения nonce, которое будет проверено в будущих запросах.
- generateResponseHash() publicГенерация хэша ответа для данного массива digest.
- getUser() publicПолучение пользователя на основе информации в запросе. Используется для бескукичной аутентификации для бессостоятельных клиентов.
- loginHeaders() publicГенерация заголовков входа.
- parseAuthData() publicРазбор заголовков аутентификации digest и их разделение.
- Создаёт хэш пароля аутентификации digest для хранения
- validNonce() protectedПроверка nonce на валидность и срок действия.
Подробное описание методов
__construct()source 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 Регистр компонентов, используемый в этом запросе.
- массив
$configнеобязательно [] - Массив конфигурации для использования.
Переопределяет
Cake\Auth\BaseAuthenticate::__construct() _getDigest()source protected
_getDigest( Cake\Http\ServerRequest $request )
Получение заголовков digest из запроса/окружения.
Параметры
-
Cake\Http\ServerRequest$request - Объект запроса.
Возвращает
массив|булевоИнформация о digest.
generateNonce()source protected
generateNonce( )
Генерирует значение nonce, которое будет проверено в будущих запросах.
Возвращает
строкаgenerateResponseHash()source public
generateResponseHash( array $digest , string $password , string $method )
Генерирует хэш ответа для заданного массива digest.
Параметры
- массив
$digest - Информация о digest, содержащая данные из DigestAuthenticate::parseAuthData().
- строка
$password - Пароль хэша digest, сгенерированный с помощью DigestAuthenticate::password()
- строка
$method - Метод запроса
Возвращает
строкаХэш ответа
getUser()source public
getUser( Cake\Http\ServerRequest $request )
Получение пользователя на основе информации в запросе. Используется для бескукичной аутентификации для бессостоятельных клиентов.
Параметры
-
Cake\Http\ServerRequest$request - Объект запроса.
Возвращает
смешанный типЛибо false, либо массив информации о пользователе
Переопределяет
Cake\Auth\BasicAuthenticate::getUser() loginHeaders()source public
loginHeaders( Cake\Http\ServerRequest $request )
Генерирует заголовки входа
Параметры
-
Cake\Http\ServerRequest$request - Объект запроса.
Возвращает
массивЗаголовки для входа.
Переопределяет
Cake\Auth\BasicAuthenticate::loginHeaders() parseAuthData()source public
parseAuthData( string $digest )
Разбор заголовков аутентификации digest и их разделение.
Параметры
- строка
$digest - Исходные заголовки аутентификации digest.
Возвращает
массив|nullМассив заголовков аутентификации digest
password()source public static
password( string $username , string $password , string $realm )
Создаёт хэш пароля аутентификации digest для хранения
Параметры
- строка
$username - Имя пользователя для использования в хэше digest.
- строка
$password - Незахешированный пароль для создания хэша digest.
- строка
$realm - Область, для которой предназначен пароль.
Возвращает
строкаХешированный пароль, который позже можно использовать с аутентификацией Digest.
validNonce()source protected
validNonce( string $nonce )
Проверка nonce на валидность и срок действия.
Параметры
- строка
$nonce - Значение nonce для проверки.
Возвращает
булевоМетоды, унаследованные от Cake\Auth\BasicAuthenticate
authenticate()source public
authenticate( Cake\Http\ServerRequest $request , Cake\Http\Response $response )
Авторизовать пользователя с помощью HTTP-аутентификации. Будет использовать настроенную модель пользователя и попытается выполнить вход с помощью HTTP-аутентификации.
Параметры
-
Cake\Http\ServerRequest$request - Запрос для аутентификации.
-
Cake\Http\Response$response - Ответ для добавления заголовков.
Возвращает
mixedВ случае неудачи возвращает false, в случае успеха — массив данных пользователя.
unauthenticated()source public
unauthenticated( Cake\Http\ServerRequest $request , Cake\Http\Response $response )
Обрабатывает попытку доступа без аутентификации, отправляя соответствующие заголовки входа.
Параметры
-
Cake\Http\ServerRequest$request - Объект запроса.
-
Cake\Http\Response$response - Объект ответа.
Выбрасывает
Cake\Http\Exception\UnauthorizedExceptionПереопределяет
Cake\Auth\BaseAuthenticate::unauthenticated() Методы, унаследованные от Cake\Auth\BaseAuthenticate
_findUser()source protected
_findUser( string $username , string|null $password = null )
Находит запись пользователя по предоставленному имени пользователя и паролю.
Пароли на входе будут хешироваться, даже если пользователь не существует. Это помогает снизить риск атак на основе тайминга, которые пытаются найти допустимые имена пользователей.
Параметры
- string
$username - Имя пользователя/идентификатор.
- string|null
$passwordoptional null Пароль. Если не предоставлен, проверка пароля пропускается, и возвращается результат поиска.
Возвращает
boolean|arrayВ случае неудачи возвращает false, в случае успеха — массив данных пользователя.
_query()source protected
_query( string $username )
Получить объект запроса для извлечения пользователя из базы данных.
Параметры
- string
$username - Имя пользователя/идентификатор.
Возвращает
Cake\ORM\QueryimplementedEvents()source public
implementedEvents( )
Возвращает список всех событий, на которые будет подписываться этот класс аутентификации.
Класс аутентификации может подписываться на следующие события, генерируемые AuthComponent:
Auth.afterIdentify- Срабатывает после того, как пользователь был идентифицирован с помощью одного из настроенных классов аутентификации. Функция обратного вызова должна иметь сигнатуру, похожую наafterIdentify(Event $event, array $user), когда$user— идентифицированная запись пользователя.Auth.logout- Срабатывает при вызове AuthComponent::logout(). Функция обратного вызова должна иметь сигнатуру, похожую наlogout(Event $event, array $user), где$user— пользователь, который собирается быть разлогинен.
Возвращает
arrayСписок событий, на которые подписывается этот класс. По умолчанию
[].Реализация
Cake\Event\EventListenerInterface::implementedEvents() needsPasswordRehash()source public
needsPasswordRehash( )
Возвращает значение, указывающее, требуется ли перехешировать пароль, хранящийся в репозитории для вошедшего пользователя, с использованием другого алгоритма.
Возвращает
booleanpasswordHasher()source public
passwordHasher( )
Возвращает объект хеширования паролей.
Возвращает
Cake\Auth\AbstractPasswordHasherЭкземпляр хешера паролей
Выбрасывает
RuntimeExceptionЕсли класс хеширования паролей не найден или он не расширяет AbstractPasswordHasher
Методы, используемые из Cake\Core\InstanceConfigTrait
_configDelete()source protected
_configDelete( string $key )
Удаляет один ключ конфигурации.
Параметры
- string
$key - Ключ для удаления.
Выбрасывает
Cake\Core\Exception\Exceptionесли происходит попытка перезаписи существующей конфигурации
_configRead()source protected
_configRead( string|null $key )
Читает ключ конфигурации.
Параметры
- string|null
$key - Ключ для чтения.
Возвращает
mixed_configWrite()source protected
_configWrite( string|array $key , mixed $value , boolean|string $merge = false )
Записывает ключ конфигурации.
Параметры
- string|array
$key - Ключ для записи.
- mixed
$value - Значение для записи.
- boolean|string
$mergeoptional false True для рекурсивного объединения, 'shallow' для простого объединения, false для перезаписи, по умолчанию false.
Выбрасывает
Cake\Core\Exception\Exceptionесли происходит попытка перезаписи существующей конфигурации
config()source public deprecated
config( string|array|null $key = null , mixed|null $value = null , boolean $merge = true )
Получает/устанавливает конфигурацию.
Использование
Чтение всей конфигурации:
$this->config();
Чтение определенного значения:
$this->config('key'); Чтение вложенного значения:
$this->config('some.nested.key'); Установка определенного значения:
$this->config('key', $value); Установка вложенного значения:
$this->config('some.nested.key', $value); Обновление нескольких настроек конфигурации одновременно:
$this->config(['one' => 'value', 'another' => 'value']);
Устарело
3.4.0 используйте setConfig()/getConfig() вместо этого.Параметры
- string|array|null
$keyoptional null - Ключ для получения/установки или массив всей конфигурации.
- mixed|null
$valueoptional null - Значение для установки.
- boolean
$mergeoptional true - Выполнять рекурсивное объединение или перезапись существующей конфигурации, по умолчанию true.
Возвращает
mixedЗначение конфигурации, которое считывается, или сам объект при операциях записи.
Выбрасывает
Cake\Core\Exception\ExceptionПри попытке установить недопустимый ключ.
configShallow()source public
configShallow( string|array $key , mixed|null $value = null )
Объединить предоставленную конфигурацию с существующей конфигурацией. В отличие от config(), которое выполняет рекурсивное объединение для вложенных ключей, этот метод выполняет простое объединение.
Установка определенного значения:
$this->configShallow('key', $value); Установка вложенного значения:
$this->configShallow('some.nested.key', $value); Обновление нескольких настроек конфигурации одновременно:
$this->configShallow(['one' => 'value', 'another' => 'value']);
Параметры
- string|array
$key - Ключ для установки или массив всей конфигурации.
- mixed|null
$valueoptional null - Значение для установки.
Возвращает
$this
getConfig()source public
getConfig( string|null $key = null , mixed $default = null )
Возвращает конфигурацию.
Использование
Чтение всей конфигурации:
$this->getConfig();
Чтение определенного значения:
$this->getConfig('key'); Чтение вложенного значения:
$this->getConfig('some.nested.key'); Чтение со значением по умолчанию:
$this->getConfig('some-key', 'default-value'); Параметры
- string|null
$keyoptional null - Ключ для получения или null для всей конфигурации.
- mixed
$defaultoptional null - Значение по умолчанию, если ключ не существует.
Возвращает
mixedЗначение конфигурации.
setConfig()source public
setConfig( string|array $key , mixed|null $value = null , boolean $merge = true )
Устанавливает конфигурацию.
Использование
Установка определенного значения:
$this->setConfig('key', $value); Установка значения вложенного уровня:
$this->setConfig('some.nested.key', $value); Обновление нескольких параметров конфигурации одновременно:
$this->setConfig(['one' => 'value', 'another' => 'value']);
Параметры
- string|array
$key - Ключ для установки или массив конфигураций.
- mixed|null
$valueнеобязательно null - Значение для установки.
- boolean
$mergeнеобязательно true - Флаг рекурсивного слияния или перезаписи существующей конфигурации, по умолчанию true.
Возвращаемое значение
$this
Исключения
Cake\Core\Exception\ExceptionПри попытке установить несуществующий ключ.
Методы, используемые из Cake\ORM\Locator\LocatorAwareTrait
getTableLocator()source public
getTableLocator( )
Получает локатор таблиц.
Возвращаемое значение
Cake\ORM\Locator\LocatorInterfacesetTableLocator()source public
setTableLocator( Cake\ORM\Locator\LocatorInterface $tableLocator )
Устанавливает локатор таблиц.
Параметры
-
Cake\ORM\Locator\LocatorInterface$tableLocator - Экземпляр LocatorInterface.
Возвращаемое значение
$this
tableLocator()source public устаревший
tableLocator( Cake\ORM\Locator\LocatorInterface $tableLocator = null )
Устанавливает локатор таблиц. Если параметры не переданы, возвращает текущий используемый локатор.
Устарело
3.5.0 Используйте getTableLocator()/setTableLocator() вместо этого.Параметры
-
Cake\ORM\Locator\LocatorInterface$tableLocatorнеобязательно null - Экземпляр LocatorInterface.
Возвращаемое значение
Cake\ORM\Locator\LocatorInterface
© 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/3.7/class-Cake.Auth.DigestAuthenticate.html