Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> spring security - ручная аворизация 
V
    Опции темы
iluvatar
Дата 7.8.2010, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 266
Регистрация: 17.9.2007

Репутация: 4
Всего: 4



Есть приложение, механизмы авторизации - на spring security, а для регистрации используется свой модуль.
После регистрации бросаем письмо пользователю на мыло, он должен пройти по ссылке для активации и после этого хочется его залогинить.

Варианта два я вижу два:
1. редирекнуть его на /j_spring_security_check предварительно записав в запрос логин/пароль
2. вручную положить принципиал в сессию. Для этого надо бросить в контекст объект класса UsernamePasswordAuthenticationToken. А для этого потребуется пароль для поля credentials

Основная проблема в том, что пароли хранятся в зашифрованном виде и доступа к незашифрованным нет, а для обоих вариантов нужен как раз незашифрованный.

Как быть?
PM MAIL ICQ   Вверх
ki6opr
Дата 9.8.2010, 03:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 67
Регистрация: 20.12.2006

Репутация: нет
Всего: нет



ну писать в запрос логин и пароль явно не самая удачная идея.

мне так кажется что если пароль не положить ничего страшного не будет (только если вы потом в приложении не попросите пользователя ввести его еще раз, для какого-нибудь подтверждения). Во всяком случае спринг секьюрити проверяет пароль только в AuthenticationProvider'е
PM MAIL ICQ   Вверх
Joss
Дата 9.8.2010, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 19.3.2006

Репутация: нет
Всего: 1



Я так понимаю, активация происходит приблизительно т.о.: после регистрации для нового пользователя генерится некий activation code, который встраивается в ссылку, отправляемую пользователю на мыло. Пользователь переходит по ссылке и аккаунт благополучно активируется. Дальше нужно автоматически залогинить пользователя. Я правильно понимаю проблему?
Что если сделать еще один механизм аутентификации по activation code, который, в принципе, будет отрабатывать только раз для пользователя, активируя аккаунт? Ведь связка activation code - user существует.
PM MAIL   Вверх
Kircul
Дата 9.8.2010, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 166
Регистрация: 20.2.2007

Репутация: 1
Всего: 7



Цитата(iluvatar @  7.8.2010,  20:00 Найти цитируемый пост)
вручную положить принципиал в сессию. Для этого надо бросить в контекст объект класса UsernamePasswordAuthenticationToken. А для этого потребуется пароль для поля credentials

Насколько я помню, при логине сначала вычисляется хэш (md5 для примера password{salt} -> ce421738b1c5540836bdc8ff707f1572), далее сравнивается с хэшем из базы (я так понимаю именно этот метод используется), и далее токен кладется в сессию. Т.о. пароль в открытом виде вовсе и не нужен.
PM   Вверх
iluvatar
Дата 9.8.2010, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 266
Регистрация: 17.9.2007

Репутация: 4
Всего: 4



Joss, да, механизм именно такой.
Если подскажете как реализовать такую авторизацию средствами спринга - вопрос будет решен, а я буду благодарен во-веки-веков.


Kircul, Я ручками смотрел что находится в сессии, там есть поле, содержащее пароль в незахешированном виде. Не могу сказать для чего это поле вообще используется, но оно там есть.
PM MAIL ICQ   Вверх
iluvatar
Дата 13.8.2010, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 266
Регистрация: 17.9.2007

Репутация: 4
Всего: 4



может, кому-то пригодится
http://ru.wikibooks.org/wiki/%D0%A2%D0%B5%....BC.D1.83.D1.8E
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.1414 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.