Класс DigestAuthenticate
Адаптер Digest аутентификации для компонента Auth.
Обеспечивает поддержку Digest HTTP аутентификации для компонента Auth.
Использование Digest аутентификации
В массиве компонентов вашего контроллера добавьте auth и необходимую конфигурацию
public $components = [
'Auth' => [
'authenticate' => ['Digest']
]
]; Вы также должны установить AuthComponent::$sessionKey = false; в методе beforeFilter() вашего контроллера AppController, чтобы предотвратить отправку CakePHP куки сессии клиенту.
Поскольку HTTP Digest аутентификация бессостоятельна, вам не нужен действие login() в вашем контроллере. Данные пользователя будут проверяться при каждом запросе. Если валидные данные аутентификации не предоставлены, данный поставщик аутентификации отправит необходимые заголовки аутентификации, что вызовет диалог входа в браузере/клиенте.
Вы также можете использовать $this->Auth->unauthorizedRedirect = false;. Это заставит компонент Auth выбросить исключение ForbiddenException вместо перенаправления на другую страницу.
Генерация паролей, совместимых с 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\Auth\BasicAuthenticate
-
Cake\Auth\DigestAuthenticate
Унаследованные свойства
Краткое описание методов
- __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 - Ответ для добавления заголовков.
Возвращает
смешанное значениеЛибо false при ошибке, либо массив данных пользователя при успехе.
unauthenticated()source public
unauthenticated( Cake\Http\ServerRequest $request , Cake\Http\Response $response )
Обрабатывает попытку доступа без авторизации, отправляя соответствующие заголовки входа в систему
Параметры
-
Cake\Http\ServerRequest$request - Объект запроса.
-
Cake\Http\Response$response - Объект ответа.
Исключения
Cake\Network\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 True — для рекурсивного слияния, 'shallow' — для простого слияния, false — для перезаписи. По умолчанию — false.
Исключения
Cake\Core\Exception\Exceptionпри попытке перезаписи существующей конфигурации
config()source public
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 - Рекурсивное слияние или перезапись существующей конфигурации (по умолчанию — 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Значение конфигурации, которое считывается.
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При попытке установить недопустимый ключ.
© 2005–2018 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.5/class-Cake.Auth.DigestAuthenticate.html