Spring Security/Ключевые сервисы Spring Security: различия между версиями
Содержимое удалено Содержимое добавлено
DannyS712 (обсуждение | вклад) м <source> -> <syntaxhighlight> (phab:T237267) |
Fuxx (обсуждение | вклад) м Возращаемый=>Возвращаемый | явлется=> является | обсуждатся=>обсуждаться |хнариться=>храниться |
||
Строка 38:
</syntaxhighlight>
<code>PasswordEncoder</code> и <code>SaltSource</code> являются необязательными. <code>PasswordEncoder</code> обеспечивает кодирование и декодирование паролей, представленных в объекте <code>UserDetails</code>, который возвращается настроенным <code>UserDetailsService</code>. <code>SaltSource</code> позволяет "добавлять соль" в пароли, что повышает безопасность паролей в аутентификационном репозитории. Ниже это будет
= Реализация UserDetailsService =
Строка 47:
</syntaxhighlight>
Данный <code>UserDetailsService</code> настолько прост в реализации, что пользователи смогут легко запросить аутентификационную информацию с использованием одной из стратегий сохранения данных. Надо сказать, что Spring Security включает пару полезных базовых реализаций этого интерфейса, которые мы рассмотрим ниже.
Строка 104:
== Что такое «хеш»? ==
Хэширования паролей не уникальное свойство Spring Security, но
<pre>
Строка 116:
== Хеширование и аутентификация ==
Когда аутентификационному провайдеру (такому как <code>DaoAuthenticationProvider</code>) нужно сверить пароль, присланный в аутентификационном запросе со значением, которое известно для данного пользователя и пароль хранится в закодированном виде, то тогда присланное значение должно быть закодировано с помощью точно такого же алгоритма. Совместимость алгоритмов это полностью ваша зона ответственности. Spring Security не может контролировать хранимые значения. Если вы добавили хеширование паролей в конфигурацию аутентификации Spring Security, а в базе данных пароли хранятся в виде обычного не шифрованного текста, то в это случае аутентификация не произойдет ни при каких обстоятельствах. Например, даже если вы знаете что в базе данных используется MD5 кодирование и ваше приложение сконфигурировано так, чтобы использовать <code>Md5PasswordEncoder</code> из состава Spring Security, то все равно есть возможность получить ошибку. В базе данных кодированные пароли могут храниться в виде <tt>Base64</tt> , а кодировщик Spring Security например будет использовать строки с шестнадцатеричными значениями (по умолчанию) [5]. Или в базе данных сведения будут
{{BookCat}}
|