Класс 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-аутентификации. Будет использовать настроенную модель пользователя и попытается выполнить вход с помощью 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( )
Возвращает список всех событий, на которые будет реагировать этот класс аутентификации.
Класс аутентификации может реагировать на следующие события, генерируемые компонентом Auth:
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']);
Параметры
- строка|массив
$key - Ключ для установки или полный массив настроек.
- смешанный|null
$valueнеобязательно null - Значение для установки.
- булево
$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 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.6/class-Cake.Auth.DigestAuthenticate.html