Spec-Zone.ru › CakePHP 3.2

Класс 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
Extended by Cake\Auth\BasicAuthenticate
Extended by Cake\Auth\DigestAuthenticate
Пространство имён: Cake\Auth
Расположение: Auth/DigestAuthenticate.php

Наследуемые свойства

  • _defaultConfig, _needsPasswordRehash, _passwordHasher, _registry _config, _configInitialized

Краткое описание методов

  • __construct() public
    Конструктор
  • _getDigest() protected
    Получение заголовков digest из запроса/окружения.
  • generateResponseHash() public
    Генерация хэша ответа для данного массива digest.
  • getUser() public
    Получение пользователя на основе информации в запросе. Используется для аутентификации без cookie для бессостоятельных клиентов.
  • loginHeaders() public
    Генерация заголовков входа
  • parseAuthData() public
    Разбор заголовков аутентификации digest и их разделение.
  • password() public static
    Создание хэша пароля 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 $password optional null

Пароль. Если не указан, проверка пароля пропущена, и возвращается результат поиска.

Возвращает

boolean|array
В случае ошибки возвращается false, в противном случае — массив данных пользователя.

_query()source protected

_query( string $username )

Получить объект запроса для извлечения пользователя из базы данных.

Параметры

string $username
Имя пользователя/идентификатор.

Возвращает

Cake\ORM\Query

implementedEvents()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( )

Возвращает значение, указывающее, требуется ли повторное хеширование пароля, хранящегося в репозитории для авторизованного пользователя, с помощью другого алгоритма.

Возвращает

boolean

passwordHasher()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 optional 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 $key optional null
Ключ для получения/установки или полный массив конфигураций.
mixed|null $value optional null
Значение для установки.
boolean $merge optional 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 $value optional 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API