Класс DigestAuthenticate
Адаптер Digest аутентификации для компонента AuthComponent.
Обеспечивает поддержку Digest HTTP аутентификации для AuthComponent. В отличие от большинства адаптеров AuthComponent, DigestAuthenticate требует специального хеширования пароля, соответствующего RFC2617. Вы можете создать этот пароль, используя DigestAuthenticate::password(). Если вы хотите использовать аутентификацию digest наряду с другими методами аутентификации, рекомендуется хранить аутентификацию digest отдельно.
Клиенты, использующие Digest аутентификацию, должны поддерживать куки. Поскольку AuthComponent идентифицирует пользователей на основе содержимого сессии, клиенты без поддержки куки не будут работать должным образом.
Использование Digest аутентификации
В массиве компонентов вашего контроллера добавьте auth + необходимые настройки.
public $components = array(
'Auth' => array(
'authenticate' => array('Digest')
)
); В вашей функции входа просто вызовите $this->Auth->login() без каких-либо проверок данных POST. Это отправит заголовки аутентификации и запустит диалог входа в браузере/клиенте.
Генерация паролей, совместимых с Digest аутентификацией
Из-за спецификации Digest аутентификации, она требует специальное значение пароля. Вы можете сгенерировать этот пароль, используя DigestAuthenticate::password()
$digestPass = DigestAuthenticate::password($username, env('SERVER_NAME'), $password);
Рекомендуется хранить пароль digest аутентификации отдельно от хешей паролей, используемых для других методов входа. Например, User.password можно использовать для пароля digest, в то время как User.digest_pass будет хранить хеш пароля для использования с другими методами, такими как Basic или Form.
- BaseAuthenticate реализует CakeEventListener
-
BasicAuthenticate
-
DigestAuthenticate
С версии: 2.0
Авторское право: Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
Лицензия: MIT Лицензия
Расположение: Cake/Controller/Component/Auth/DigestAuthenticate.php
Резюме свойств
-
$settingspublicНастройки для этого объекта.array
Унаследованные свойства
Резюме методов
- __construct() publicКонструктор, завершает конфигурацию для аутентификации digest.
- _getDigest() protectedПолучает заголовки digest из запроса/среды.
- generateResponseHash() publicГенерирует хеш ответа для заданного массива digest.
- getUser() publicПолучение пользователя на основе информации в запросе. Используется для аутентификации без куки для безсостоятельных клиентов.
- loginHeaders() publicГенерирует заголовки входа
- parseAuthData() publicПарсит заголовки аутентификации digest и разделяет их.
- Создаёт хеш пароля аутентификации digest для хранения
Подробное описание методов
__construct()source public
__construct( ComponentCollection $collection , array $settings )
Конструктор, завершает конфигурацию для аутентификации digest.
Параметры
-
ComponentCollection$collection - Коллекция компонентов, используемая в этом запросе.
- массив
$settings - Массив настроек.
Переопределяет
BasicAuthenticate::__construct() _getDigest()source protected
_getDigest( )
Получает заголовки digest из запроса/среды.
Возвращает
массивМассив информации о digest.
generateResponseHash()source public
generateResponseHash( array $digest , string $password )
Генерирует хеш ответа для заданного массива digest.
Параметры
- массив
$digest - Информация о digest, содержащая данные из DigestAuthenticate::parseAuthData().
- строка
$password - Пароль хеша digest, сгенерированный с помощью DigestAuthenticate::password()
Возвращает
строкаХеш ответа
getUser()source public
getUser( CakeRequest $request )
Получение пользователя на основе информации в запросе. Используется для аутентификации без куки для безсостоятельных клиентов.
Параметры
-
CakeRequest$request - Объект запроса.
Возвращает
смешанный типЛибо false, либо массив информации о пользователе
Переопределяет
BasicAuthenticate::getUser() loginHeaders()source public
loginHeaders( )
Генерирует заголовки входа
Возвращает
строкаЗаголовки для входа.
Переопределяет
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 аутентификацией.
Методы, унаследованные от BasicAuthenticate
authenticate()source public
authenticate( CakeRequest $request , CakeResponse $response )
Аутентифицирует пользователя с помощью HTTP аутентификации. Будет использовать настроенную модель пользователя и попытается выполнить вход с помощью HTTP аутентификации.
Параметры
-
CakeRequest$request - Запрос для аутентификации.
-
CakeResponse$response - Ответ для добавления заголовков.
Возвращает
смешанный типЛибо false при ошибке, либо массив данных пользователя при успехе.
unauthenticated()source public
unauthenticated( CakeRequest $request , CakeResponse $response )
Обрабатывает попытку доступа без аутентификации, отправляя соответствующие заголовки входа
Параметры
-
CakeRequest$request - Объект запроса.
-
CakeResponse$response - Объект ответа.
Исключения
UnauthorizedExceptionПереопределяет
BaseAuthenticate::unauthenticated() Методы, унаследованные от BaseAuthenticate
_findUser()source protected
_findUser( string|array $username , string $password null )
Поиск записи пользователя с использованием стандартных опций.
Параметр $username может быть (строковым) именем пользователя или массивом, содержащим условия для Model::find('first'). Если параметр $password не указан, поле пароля будет присутствовать в возвращённом массиве.
Пароли ввода будут хешироваться даже когда пользователь не существует. Это помогает снизить влияние атак на основе времени, которые пытаются найти действительные имена пользователей.
Параметры
- строка|массив
$username - Имя пользователя/идентификатор или массив условий поиска.
- строка
$passwordнеобязательно null - Пароль, используется только если параметр $username является строкой.
Возвращает
логическое значение|массивЛибо false при ошибке, либо массив данных пользователя.
_password()source protected
_password( string $password )
Хэшировать пароль в виде обычного текста, чтобы он соответствовал хэшированному/зашифрованному паролю в источнике данных.
Устаревший
3.0.0 С 2.4. Используйте класс PasswordHasher вместо этого.Параметры
- строка
$password - Пароль в виде обычного текста.
Возвращает
строкаХэшированная форма пароля.
implementedEvents()source public
implementedEvents( )
Реализованные события
Возвращает
массивсобытий => обработчики.
Реализация
CakeEventListener::implementedEvents() logout()source public
logout( array $user )
Позволяет подключаться к AuthComponent::logout() и реализовывать специализированное поведение при выходе.
Все подключенные объекты аутентификации получат вызов этого метода при выходе пользователя.
Параметры
- массив
$user - Пользователь, который собирается выйти.
passwordHasher()source public
passwordHasher( )
Возвращает объект хэширования паролей
Возвращает
AbstractPasswordHasherЭкземпляр хэширования паролей
Исключения
CakeExceptionЕсли класс хэширования паролей не найден или он не расширяет AbstractPasswordHasher
Подробное описание свойств
$settingssource
public массив
Настройки для этого объекта.
-
fieldsПоля для идентификации пользователя. -
userModelИмя модели пользователя, по умолчанию User. -
userFieldsМассив полей для извлечения из модели User, null для извлечения всех. По умолчанию null. -
scopeДополнительные условия для поиска и аутентификации пользователей, напримерarray('User.is_active' => 1). -
recursiveЗначение рекурсивного ключа, передаваемого в find(). По умолчанию 0. -
containДополнительные модели для хранения в сессии. -
realmСфера действия аутентификации, по умолчанию имя сервера. -
nonceНомер, используемый для аутентификации. По умолчаниюuniqid(). -
qopПо умолчанию auth, в настоящее время другие значения не поддерживаются. -
opaqueСтрока, которая должна быть возвращена клиентами без изменений. По умолчаниюmd5($settings['realm'])
array(
'fields' => array(
'username' => 'username',
'password' => 'password'
),
'userModel' => 'User',
'userFields' => null,
'scope' => array(),
'recursive' => 0,
'contain' => null,
'realm' => '',
'qop' => 'auth',
'nonce' => '',
'opaque' => '',
'passwordHasher' => 'Simple',
)
© 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/2.10/class-DigestAuthenticate.html