Spec-Zone.ru › CakePHP 3.3

Класс DigestAuthenticate

Адаптер аутентификации Digest для компонента Auth.

Предоставляет поддержку аутентификации HTTP Digest для компонента AuthComponent.

Использование аутентификации Digest

В массиве компонентов вашего контроллера добавьте auth и необходимую конфигурацию

public $components = [
     'Auth' => [
         'authenticate' => ['Digest']
     ]
 ];

Вы также должны установить AuthComponent::$sessionKey = false; в методе beforeFilter() вашего AppController, чтобы предотвратить отправку CakePHP куки сессии клиенту.

Поскольку HTTP Digest Authentication бессостоятельный, вам не нужен метод 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
Пространство имён: Cake\Auth
Расположение: Auth/DigestAuthenticate.php

Унаследованные свойства

  • _defaultConfig, _needsPasswordRehash, _passwordHasher, _registry _config, _configInitialized

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

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

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

Параметры

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 аутентификации. Будет использовать настроенную модель User и попытается выполнить вход с помощью 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 )

Находит запись пользователя, используя предоставленное имя пользователя и пароль.

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

Параметры

строка $username
Имя пользователя/идентификатор.
строка|null $password необязательно null

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

Возвращает

логическое значение|массив
Либо false при неудаче, либо массив данных пользователя.

_query()source protected

_query( string $username )

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

Параметры

строка $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 — пользователь, который собирается выйти из системы.

Возвращает

массив
Список событий, на которые подписывается этот класс. По умолчанию [].

Реализация

Cake\Event\EventListenerInterface::implementedEvents()

needsPasswordRehash()source public

needsPasswordRehash( )

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

Возвращает

булево значение

passwordHasher()source public

passwordHasher( )

Возвращает объект хеширования паролей.

Возвращает

Cake\Auth\AbstractPasswordHasher
Экземпляр хешера паролей

Исключения

RuntimeException

Если класс хеширования паролей не найден или он не наследуется от AbstractPasswordHasher


Методы, используемые из Cake\Core\InstanceConfigTrait

_configDelete()source protected

_configDelete( string $key )

Удалить один ключ конфигурации.

Параметры

строка $key
Ключ для удаления.

Исключения

Cake\Core\Exception\Exception
если происходит попытка перезаписи существующей конфигурации

_configRead()source protected

_configRead( string|null $key )

Прочитать переменную конфигурации.

Параметры

строка|null $key
Ключ для чтения.

Возвращает

смешанный тип

_configWrite()source protected

_configWrite( string|array $key , mixed $value , boolean|string $merge false )

Записать переменную конфигурации.

Параметры

строка|массив $key
Ключ для записи.
смешанный тип $value
Значение для записи.
булево|строка $merge необязательный false

Истинное значение для рекурсивного объединения, 'shallow' для простого объединения, ложное значение для перезаписи; по умолчанию ложно.

Исключения

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']);

Параметры

строка|массив|null $key необязательный null
Ключ для получения/установки или полный массив конфигураций.
смешанный тип|null $value необязательный null
Значение для установки.
булево $merge необязательный true
Выполнять ли рекурсивное объединение или перезаписывать существующую конфигурацию; по умолчанию истинно.

Возвращает

смешанный тип
Значение конфигурации, которое читается, или сам объект при операциях записи.

Исключения

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']);

Параметры

строка|массив $key
Ключ для установки или полный массив конфигураций.
смешанный тип|null $value необязательный null
Значение для установки.

Возвращает


$this Объект самого себя.

© 2005–2017 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.3/class-Cake.Auth.DigestAuthenticate.html

Spec-Zone.ru

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