Класс 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\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-аутентификации. Использует настроенную модель User и пытается выполнить вход с помощью 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
$passwordопционально 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
$mergeопционально false Истина для рекурсивного слияния, 'shallow' для простого слияния, ложь для перезаписи, по умолчанию ложь.
Выбрасывает
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
$keyопционально null - Ключ для получения/установки или весь массив настроек.
- mixed|null
$valueопционально null - Значение для установки.
- boolean
$mergeопционально 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
$valueопционально 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
$keyопционально null - Ключ для получения или null для всей конфигурации.
- mixed
$defaultопционально null - Возвращаемое значение, если ключ не существует.
Возвращает
mixedДанные конфигурации по указанному ключу или null, если ключ не существует.
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 - Выполнять рекурсивное слияние или перезапись существующей конфигурации, по умолчанию истина.
Возвращает
$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 deprecated
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.8/class-Cake.Auth.DigestAuthenticate.html