Класс DigestAuthenticate
Адаптер проверки подлинности Digest для компонента Auth.
Обеспечивает поддержку HTTP-аутентификации Digest для компонента AuthComponent.
Использование аутентификации Digest
В массиве компонентов вашего контроллера добавьте auth и необходимую конфигурацию
public $components = [
'Auth' => [
'authenticate' => ['Digest']
]
]; Также необходимо установить AuthComponent::$sessionKey = false; в вашем AppController's beforeFilter() для предотвращения отправки CakePHP cookie сессии клиенту.
Поскольку 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
Наследуемые свойства
Краткое описание методов
- __construct() publicКонструктор
- _getDigest() protectedПолучение заголовков digest из запроса/окружения.
- generateResponseHash() publicГенерация хэша ответа для данного массива digest.
- getUser() publicПолучение пользователя на основе информации в запросе. Используется для аутентификации без cookie для бессостоятельных клиентов.
- loginHeaders() publicГенерация заголовков входа
- parseAuthData() publicРазбор заголовков аутентификации digest и их разделение.
- Создание хэша пароля digest для хранения
Подробное описание методов
__construct()source public
__construct( Cake\Controller\ComponentRegistry $registry , array $config [] )
Конструктор
Помимо ключей, указанных в BaseAuthenticate::$_defaultConfig, DigestAuthenticate использует следующие дополнительные ключи:
-
realmСфера аутентификации, по умолчанию соответствует имени сервера. -
nonceНонс, используемый для аутентификации. По умолчаниюuniqid(). -
qopПо умолчанию 'auth', на данный момент другие значения не поддерживаются. -
opaqueСтрока, которая должна быть возвращена клиентами без изменений. По умолчаниюmd5($config['realm'])
Параметры
-
Cake\Controller\ComponentRegistry$registry Регистр компонентов, используемый в этом запросе.
- массив
$configнеобязательно [] - Массив конфигурации для использования.
Переопределяет
Cake\Auth\BaseAuthenticate::__construct() _getDigest()source protected
_getDigest( Cake\Network\Request $request )
Получение заголовков digest из запроса/окружения.
Параметры
-
Cake\Network\Request$request - Объект запроса.
Возвращает
массивМассив информации о digest.
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\Network\Request $request )
Получение пользователя на основе информации в запросе. Используется для аутентификации без cookie для бессостоятельных клиентов.
Параметры
-
Cake\Network\Request$request - Объект запроса.
Возвращает
смешанный типЛибо false, либо массив информации о пользователе
Переопределяет
Cake\Auth\BasicAuthenticate::getUser() loginHeaders()source public
loginHeaders( Cake\Network\Request $request )
Генерация заголовков входа
Параметры
-
Cake\Network\Request$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.
Методы, унаследованные от Cake\Auth\BasicAuthenticate
authenticate()source public
authenticate( Cake\Network\Request $request , Cake\Network\Response $response )
Проверка подлинности пользователя с помощью HTTP-аутентификации. Использует настроенную модель пользователя и пытается выполнить вход с использованием HTTP-аутентификации.
Параметры
-
Cake\Network\Request$request - Запрос для проверки подлинности.
-
Cake\Network\Response$response - Ответ для добавления заголовков.
Возвращает
смешанный типЛибо false при ошибке, либо массив данных пользователя при успехе.
unauthenticated()source public
unauthenticated( Cake\Network\Request $request , Cake\Network\Response $response )
Обрабатывает попытку доступа без аутентификации, отправляя соответствующие заголовки входа
Параметры
-
Cake\Network\Request$request - Объект запроса.
-
Cake\Network\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
$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
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']);
Параметры
- 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->config('key', $value); Установка вложенного значения:
$this->config('some.nested.key', $value); Обновление нескольких настроек конфигурации одновременно:
$this->config(['one' => 'value', 'another' => 'value']);
Параметры
- string|array
$key - Ключ для установки или полный массив конфигураций.
- mixed|null
$valueoptional null - Значение для установки.
Возвращает
$this Объект самого себя.
© 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.2/class-Cake.Auth.DigestAuthenticate.html