Класс DigestAuthenticate
Адаптер аутентификации Digest для компонента Auth.
Обеспечивает поддержку HTTP-аутентификации Digest для компонента AuthComponent.
Использование аутентификации Digest
В массиве компонентов вашего контроллера добавьте auth и необходимые настройки
public $components = [ 'Auth' => [ 'authenticate' => ['Digest'] ] ];
Также необходимо установить AuthComponent::$sessionKey = false; в методе beforeFilter() вашего контроллера AppController, чтобы предотвратить отправку CakePHP куки сессии клиенту.
Поскольку HTTP-аутентификация Digest является бессостоятельной, вам не нужен action login() в вашем контроллере. Данные пользователя будут проверяться при каждом запросе. Если не предоставлены допустимые данные, этот поставщик аутентификации отправит необходимые заголовки аутентификации, которые вызовут диалог входа в браузере/клиенте.
Вы также можете использовать $this->Auth->unauthorizedRedirect = false;. Это заставит AuthComponent бросать исключение 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
Подробное описание методов
__constructsource public
__construct( Cake\Controller\ComponentRegistry $registry , array $config [] )
Конструктор
Помимо ключей, указанных в BaseAuthenticate::$_defaultConfig, DigestAuthenticate использует следующие дополнительные ключи:
-
realmОбласть аутентификации, по умолчанию — имя сервера. -
nonceСлучайный nonce, используемый для аутентификации. По умолчаниюuniqid(). -
qopПо умолчанию 'auth', в настоящее время другие значения не поддерживаются. -
opaqueСтрока, которая должна быть возвращена клиентами без изменений. По умолчаниюmd5($config['realm'])
Параметры
-
Cake\Controller\ComponentRegistry$registry - Регистр компонентов, используемый в этом запросе.
- массив
$configнеобязательно [] - Массив настроек для использования.
Переопределяет
Cake\Auth\BaseAuthenticate::__construct() _getDigestsource protected
_getDigest( Cake\Network\Request $request )
Получает заголовки digest из запроса/окружения.
Параметры
-
Cake\Network\Request$request - Объект запроса.
Возвращает
arrayМассив информации о digest.
generateResponseHashsource public
generateResponseHash( array $digest , string $password , string $method )
Генерирует хеш ответа для заданного массива digest.
Параметры
- массив
$digest - Информация о digest, содержащая данные из DigestAuthenticate::parseAuthData().
- строка
$password - Хеш пароля digest, сгенерированный с помощью DigestAuthenticate::password()
- строка
$method - Метод запроса
Возвращает
stringХеш ответа
getUsersource public
getUser( Cake\Network\Request $request )
Получает пользователя на основе информации в запросе. Используется для бескучной аутентификации для бессостоятельных клиентов.
Параметры
-
Cake\Network\Request$request - Объект запроса.
Возвращает
mixedЛибо false, либо массив информации о пользователе
Переопределяет
Cake\Auth\BasicAuthenticate::getUser() loginHeaderssource public
loginHeaders( Cake\Network\Request $request )
Генерирует заголовки входа
Параметры
-
Cake\Network\Request$request - Объект запроса.
Возвращает
stringЗаголовки для входа.
Переопределяет
Cake\Auth\BasicAuthenticate::loginHeaders() parseAuthDatasource public
parseAuthData( string $digest )
Парсит заголовки аутентификации digest и разделяет их.
Параметры
- строка
$digest - Необработанные заголовки аутентификации digest.
Возвращает
array|nullМассив заголовков аутентификации digest
passwordsource public static
password( string $username , string $password , string $realm )
Создаёт хеш пароля аутентификации digest для хранения
Параметры
- строка
$username - Имя пользователя, используемое в хеше digest.
- строка
$password - Незахешированный пароль для создания хеша digest.
- строка
$realm - Область, для которой предназначен пароль.
Возвращает
stringЗахешированный пароль, который можно использовать позже для аутентификации Digest.
Наследуемые методы из Cake\Auth\BasicAuthenticate
authenticatesource public
authenticate( Cake\Network\Request $request , Cake\Network\Response $response )
Аутентифицирует пользователя с помощью HTTP-аутентификации. Использует настроенную модель User и пытается выполнить вход с помощью HTTP-аутентификации.
Параметры
-
Cake\Network\Request$request - Запрос для аутентификации.
-
Cake\Network\Response$response - Ответ для добавления заголовков.
Возвращает
mixedВ случае ошибки — false, в случае успеха — массив данных пользователя.
unauthenticatedsource public
unauthenticated( Cake\Network\Request $request , Cake\Network\Response $response )
Обрабатывает попытку доступа без аутентификации, отправляя соответствующие заголовки входа
Параметры
-
Cake\Network\Request$request - Объект запроса.
-
Cake\Network\Response$response - Объект ответа.
Использует
Cake\Network\Exception\UnauthorizedException\Cake\Network\Exception\UnauthorizedException
Переопределяет
Cake\Auth\BaseAuthenticate::unauthenticated() Наследуемые методы из Cake\Auth\BaseAuthenticate
_findUsersource protected
_findUser( string $username , string|null $password null )
Находит запись пользователя, используя предоставленное имя пользователя и пароль.
Пароли на входе будут хешированы, даже если пользователь не существует. Это помогает смягчить атаки с временной задержкой, которые пытаются найти допустимые имена пользователей.
Параметры
- строка
$username - Имя пользователя/идентификатор.
- строка|null
$passwordнеобязательно null - Пароль, если не указан, проверка пароля пропускается, и возвращается результат find.
Возвращает
boolean|arrayВ случае ошибки — false, в случае успеха — массив данных пользователя.
_querysource protected
_query( string $username )
Получает объект запроса для извлечения пользователя из базы данных.
Параметры
- строка
$username - Имя пользователя/идентификатор.
Возвращает
Cake\ORM\Query\Cake\ORM\Query
implementedEventssource 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() needsPasswordRehashsource public
needsPasswordRehash( )
Возвращает значение, указывающее, требуется ли повторное хеширование пароля, хранящегося в хранилище для вошедшего пользователя, с помощью другого алгоритма.
Возвращает
booleanbool
passwordHashersource public
passwordHasher( )
Возвращает объект хеширования паролей.
Возвращает
Cake\Auth\AbstractPasswordHasherЭкземпляр хеширования паролей
Выбрасывает
RuntimeExceptionЕсли класс хеширования паролей не найден или он не расширяет AbstractPasswordHasher
Методы, используемые из Cake\Core\InstanceConfigTrait
_configDeletesource protected
_configDelete( string $key )
Удаляет один ключ конфигурации.
Параметры
- строка
$key - Ключ для удаления.
Выбрасывает
Cake\Core\Exception\Exceptionесли пытаетесь перезаписать существующую конфигурацию
_configReadsource protected
_configRead( string|null $key )
Чтение переменной конфигурации.
Параметры
- строка|null
$key - Ключ для чтения.
Возвращает
mixedсмешанный тип
_configWritesource protected
_configWrite( string|array $key , mixed $value , boolean|string $merge false )
Запись переменной конфигурации.
Параметры
- строка|массив
$key - Ключ для записи.
- смешанный тип
$value - Значение для записи.
- булево|строка
$mergeдополнительно false - Истинно для рекурсивного слияния, 'shallow' для простого слияния, ложно для перезаписи, по умолчанию ложно.
Выбрасывает
Cake\Core\Exception\Exceptionесли пытаетесь перезаписать существующую конфигурацию
configsource 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']);
Параметры
- строка|массив|null
$keyдополнительно null - Ключ для получения/установки или полный массив конфигураций.
- смешанный тип|null
$valueдополнительно null - Значение для установки.
- булево
$mergeдополнительно true - Выполнять рекурсивное слияние или перезапись существующей конфигурации, по умолчанию истинно.
Возвращает
mixedЗначение конфигурации, которое читается, или сам объект при операциях записи.
Выбрасывает
Cake\Core\Exception\ExceptionПри попытке установить недопустимый ключ.
configShallowsource public
configShallow( string|array $key , mixed|null $value null )
Объединяет предоставленную конфигурацию с существующей конфигурацией. В отличие от config(), которая выполняет рекурсивное слияние для вложенных ключей, этот метод выполняет простое слияние.
Установка определенного значения:
$this->config('key', $value);
Установка вложенного значения:
$this->config('some.nested.key', $value);
Обновление нескольких настроек конфигурации одновременно:
$this->config(['one' => 'value', 'another' => 'value']);
Параметры
- строка|массив
$key - Ключ для установки или полный массив конфигураций.
- смешанный тип|null
$valueдополнительно null - Значение для установки.
Возвращает
mixedСам объект.
Свойства, унаследованные от Cake\Auth\BaseAuthenticate
$_defaultConfigsource
protected массив
Настройки по умолчанию для этого объекта.
-
fieldsПоля, используемые для идентификации пользователя. -
userModelПсевдоним таблицы пользователей, по умолчанию Users. -
finderМетод поиска для извлечения записи пользователя. По умолчанию 'all'. -
passwordHasherКласс хеширования паролей. Может быть строкой, указывающей имя класса, или массивом, содержащим ключclassName, любые другие ключи будут переданы как настройки в класс. По умолчанию 'Default'. - Параметры
scopeиcontainустарели с версии 3.1. Используйте пользовательский поиск вместо этого для изменения запроса для извлечения записи пользователя.
[
'fields' => [
'username' => 'username',
'password' => 'password'
],
'userModel' => 'Users',
'scope' => [],
'finder' => 'all',
'contain' => null,
'passwordHasher' => 'Default'
] $_needsPasswordRehashsource
protected булево
Указывает, требуется ли повторное хеширование пароля пользователя, аутентифицированного этим классом, с помощью другого алгоритма.
false $_registrysource
protected Cake\Controller\ComponentRegistry
Регистр компонентов, используемый для получения дополнительных компонентов.
Свойства, используемые из Cake\Core\InstanceConfigTrait
$_configInitializedsource
protected булево
Указывает, была ли свойство конфигурации уже настроено со значениями по умолчанию
false
© 2005–2016 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.
http://api.cakephp.org/3.1/class-Cake.Auth.DigestAuthenticate.html