Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring Security. Три атрибута авторизации. (Логин+Пароль+Компания) / 25 сообщений из 41, страница 1 из 2
11.05.2016, 13:07
    #39233265
TepKuH
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring Security. Три атрибута авторизации. (Логин+Пароль+Компания)
Коллеги,
Есть следующая задача:
Юзер имеет свой логин и пароль. А так же может иметь третий авторизационный параметр (компания), а может и не иметь.
Нужно сделать так, чтобы юзер вводил логин\пасс и в случаи если юзер принадлежит к двум или более компаниям выводить ему страницу выбора компании.
Если же юзер не принадлежит ни одной компании или только к одной не выводить страницу с выбором третьего параметра (компании) и применять какую то умолчательную компанию.
Мой вопрос заключается в том как такое реализовывается с помощью Spring Security. У меня мыслей кроме two factor authentication нету и я не уверен, что это православный путь реализации такой задачи.
Был бы благодарен за ссылки чего бы почитать как это пилят в лучших домах Лондона и Парижа :)
...
Рейтинг: 0 / 0
11.05.2016, 13:19
    #39233293
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring Security. Три атрибута авторизации. (Логин+Пароль+Компания)
TepKuHЮзер имеет свой логин и пароль. А так же может иметь третий авторизационный параметр (компания), а может и не иметь.
уберите (назовите по другому) третий параметр и всё станет на места.
Например, 3-ий парам - Настройки и предпочтения пользователя.
Показ настроек хоть через админку, хоть ему самому на входе после аутентификации .
Т.к. она может быть просто по кукам, чтобы юзвери не ругались.
Т.е. задача не в ту степь и неправославна.
...
Рейтинг: 0 / 0
11.05.2016, 13:21
    #39233303
Alexey Tomin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring Security. Три атрибута авторизации. (Логин+Пароль+Компания)
Petro123TepKuHЮзер имеет свой логин и пароль. А так же может иметь третий авторизационный параметр (компания), а может и не иметь.
уберите (назовите по другому) третий параметр и всё станет на места.
Например, 3-ий парам - Настройки и предпочтения пользователя.
Показ настроек хоть через админку, хоть ему самому на входе после аутентификации .
Т.к. она может быть просто по кукам, чтобы юзвери не ругались.
Т.е. задача не в ту степь и неправославна.

Подозреваю, что у пользователя права на действия зависят от "компании".
Если так, то можно сделать так (я делал для jboss/javaee) - выдаются права на одно действие- выбор параметра. После этого заново заполняются допустимые здесь действия, а так же "компанию"- чтобы подставлять его во все запросы как фильтр.
...
Рейтинг: 0 / 0
11.05.2016, 13:24
    #39233308
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring Security. Три атрибута авторизации. (Логин+Пароль+Компания)
Alexey TominПодозреваю, что у пользователя права на действия зависят от "компании".
Я тоже подозреваю. Но тогда что значит - нет ни одной комании?
Минимальные права?
...
Рейтинг: 0 / 0
11.05.2016, 13:27
    #39233313
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring Security. Три атрибута авторизации. (Логин+Пароль+Компания)
после стандартного ввода логини/пароля и отправки на сервер, с сервера идет ответ и по которому полявляется поле для ввода третьего параметра(если для данного юзера это наобходимо) или переход на следующую страницу
...
Рейтинг: 0 / 0
11.05.2016, 13:28
    #39233316
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring Security. Три атрибута авторизации. (Логин+Пароль+Компания)
Логин и пароль отвечают только за аутентификацию. И мешать с авторизацией не стоит.
А потом уже методы решения и раздачи прав (хоть по 20ти параметрам)
imho
...
Рейтинг: 0 / 0
11.05.2016, 13:30
    #39233320
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring Security. Три атрибута авторизации. (Логин+Пароль+Компания)
вадяпосле стандартного ввода логини/пароля и отправки на сервер, с сервера идет ответ и по которому полявляется поле для ввода третьего параметра(если для данного юзера это наобходимо) или переход на следующую страницу
это и есть мешанина кода и смысла.
Т.к. ответ ты пришлёшь любому не прошедшему аутентификацию.
Т.е. любому Пупкину.
...
Рейтинг: 0 / 0
11.05.2016, 13:38
    #39233331
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring Security. Три атрибута авторизации. (Логин+Пароль+Компания)
Petro123вадяпосле стандартного ввода логини/пароля и отправки на сервер, с сервера идет ответ и по которому полявляется поле для ввода третьего параметра(если для данного юзера это наобходимо) или переход на следующую страницу
это и есть мешанина кода и смысла.
Т.к. ответ ты пришлёшь любому не прошедшему аутентификацию.
Т.е. любому Пупкину.
как ты думаешь - откуда серверу знать что посылать - вопрос с параметром или команду для перехода к с ледующей странице?
наверно логично будет по логину/паролю произвести аутентификайию и по результату отправить.
возможны три варианта
1 логин/пароль не верны
2 переход на следующую страницу , если для данного юзере не требуется доп параметр
3 появление поля для выбора параметра

есть сложности с такой реализацией?
...
Рейтинг: 0 / 0
11.05.2016, 13:46
    #39233345
TepKuH
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring Security. Три атрибута авторизации. (Логин+Пароль+Компания)
Alexey TominПодозреваю, что у пользователя права на действия зависят от "компании".
Если так, то можно сделать так (я делал для jboss/javaee) - выдаются права на одно действие- выбор параметра. После этого заново заполняются допустимые здесь действия, а так же "компанию"- чтобы подставлять его во все запросы как фильтр.
Вы правильно подозреваете :)
В зависимости от компании юзеру показываются разные данные в представлениях. А так же доступны доп. кнопки в представлении.

Petro123Минимальные права?
Верно.

вадяпосле стандартного ввода логини/пароля и отправки на сервер, с сервера идет ответ и по которому полявляется поле для ввода третьего параметра(если для данного юзера это наобходимо) или переход на следующую страницу
Ну так оно по идеи и должно быть. Но только если юзер принадлежит к двум или более компаниям он эту страницу для ввода третьего парамтра обойти не может. т.е. попытка попасть на защищенные спрингом страницы должна быть не успешна.
Т.е. после первого шага авторизации юзер делжен принадлежать к какой то временной группе. А после страницы выбора компании уже получать роли которые замапленные к компании.
...
Рейтинг: 0 / 0
11.05.2016, 13:49
    #39233351
TepKuH
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring Security. Три атрибута авторизации. (Логин+Пароль+Компания)
вадявозможны три варианта
1 логин/пароль не верны
2 переход на следующую страницу , если для данного юзере не требуется доп параметр
3 появление поля для выбора параметра
есть сложности с такой реализацией?
Да, есть.
Если юзер ввел правильный логин и пароль. Он считается авторизованным пользователем. И следовательно может попадать в защищенные спрингом страницы. А он не должен :) Если принадлежит к 2 или более компаниям. его должно всегда редиректить на страницу выбора компании.
...
Рейтинг: 0 / 0
11.05.2016, 13:54
    #39233361
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring Security. Три атрибута авторизации. (Логин+Пароль+Компания)
авторНу так оно по идеи и должно быть. Но только если юзер принадлежит к двум или более компаниям он эту страницу для ввода третьего парамтра обойти не может. т.е. попытка попасть на защищенные спрингом страницы должна быть не успешна.
Т.е. после первого шага авторизации юзер делжен принадлежать к какой то временной группе. А после страницы выбора компании уже получать роли которые замапленные к компании.
а какие проблемы для организации такой логики?
после отправки логина/пароля происходит проверка. он не принадлежит ни к какой группе, если для дальнеёшего входа надо ввести ещё один параметр, просто на клиента по ajax отпрвляется команда на ввод параметра
...
Рейтинг: 0 / 0
11.05.2016, 13:55
    #39233366
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring Security. Три атрибута авторизации. (Логин+Пароль+Компания)
вадянаверно логично будет по логину/паролю произвести аутентификайию и по результату отправить.
немного беременным быть нельзя.
- произвёл аутентификацию - на выходе ДА или НЕТ. А потом всё остальное.
Вот и разделяй (код от представления) одно от другого.
...
Рейтинг: 0 / 0
11.05.2016, 13:56
    #39233370
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring Security. Три атрибута авторизации. (Логин+Пароль+Компания)
авторДа, есть.
Если юзер ввел правильный логин и пароль. Он считается авторизованным пользователем. И следовательно может попадать в защищенные спрингом страницы. А он не должен :) Если принадлежит к 2 или более компаниям. его должно всегда редиректить на страницу выбора компании.
кем считается?
пока сервер не приял решение и не отправил клиенту - он никем не считается.
не важно прошёл он первый пункт или нет
...
Рейтинг: 0 / 0
11.05.2016, 13:58
    #39233375
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring Security. Три атрибута авторизации. (Логин+Пароль+Компания)
Petro123вадянаверно логично будет по логину/паролю произвести аутентификайию и по результату отправить.
немного беременным быть нельзя.
- произвёл аутентификацию - на выходе ДА или НЕТ. А потом всё остальное.
Вот и разделяй (код от представления) одно от другого.
даже если он угадал логин /пароль и если для этого логина/пароля необходим третий параметр - сервер его никуда не пустит, если нет этого параметра
логика элементарная
...
Рейтинг: 0 / 0
11.05.2016, 13:59
    #39233377
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring Security. Три атрибута авторизации. (Логин+Пароль+Компания)
TepKuHЕсли юзер ввел правильный логин и пароль. Он считается авторизованным прошедшим аутентификацию пользователем.
И следовательно может попадать в защищенные спрингом страницы. А он не должен :)
А почему с минимальной ролью вы пускаете на все страницы?
...
Рейтинг: 0 / 0
11.05.2016, 14:02
    #39233384
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring Security. Три атрибута авторизации. (Логин+Пароль+Компания)
вадядаже если он угадал логин /пароль и если для этого логина/пароля необходим третий параметр - сервер его никуда не пустит, если нет этого параметра
логика элементарная
вот ты кругом, ничего из ГОТОВОГО не изучаешь.
Вопрос - про запрос сервера с кодом 401 слыхал?
Это в заголовках видел?
Код: java
1.
WWW-Authenticate: Basic realm="Secure Area"
...
Рейтинг: 0 / 0
11.05.2016, 14:03
    #39233386
TepKuH
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring Security. Три атрибута авторизации. (Логин+Пароль+Компания)
вадяа какие проблемы для организации такой логики?
после отправки логина/пароля происходит проверка. он не принадлежит ни к какой группе, если для дальнеёшего входа надо ввести ещё один параметр, просто на клиента по ajax отпрвляется команда на ввод параметра
Приведу пример текущего конфига спинга
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
<security:http auto-config="true" use-expressions="true">
        <security:intercept-url pattern="/selfcare/**" access="isAuthenticated()" />
        <security:form-login
                username-parameter="j_username"
                password-parameter="j_password"
                login-processing-url="/j_spring_security_check"
                login-page="/index.html"
                default-target-url="/selfcare/index.html"
                authentication-failure-url="/login.html?error" />
        <security:http-basic />
        <security:logout logout-success-url="/index.html" />
        <security:logout logout-url="/logout"/>
        <security:csrf disabled="true"/>
        <security:headers disabled="true"/>
    </security:http>   

    <security:authentication-manager alias="authenticationManager">
        <security:authentication-provider user-service-ref="customUserDetailsService">
            <security:password-encoder hash="plaintext"></security:password-encoder>
        </security:authentication-provider>
    </security:authentication-manager>


Он нам кагбэ говорит о том что если юзер отправил на контроллер j_spring_security_check параметры j_username и j_password и customUserDetailsService сверил логин и пасс то юзер считается авторизованным. И может попадать в закрытый спингом контекст /selfcare/**
Так вот юзер после ввода логина и пароля не должен еще считаться авторизованным (isAuthenticated) если он принадлежит к двум или более компаниям
...
Рейтинг: 0 / 0
11.05.2016, 14:07
    #39233392
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring Security. Три атрибута авторизации. (Логин+Пароль+Компания)
когда клиент отправил логин/пароль - сервер получил эту пару, он её проанализировал, есть юзер -смотрит надоли ему третий параметр....
что нельзя что ли это реализовать???
или всё отданно тупым прокладкам?
...
Рейтинг: 0 / 0
11.05.2016, 14:09
    #39233395
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring Security. Три атрибута авторизации. (Логин+Пароль+Компания)
http://findevelop.blogspot.ru/2013/10/web-spring-security-100.html
с помощью этого реализуется элементарно
...
Рейтинг: 0 / 0
11.05.2016, 14:10
    #39233397
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring Security. Три атрибута авторизации. (Логин+Пароль+Компания)
TepKuHи пасс то юзер считается авторизованным.
тут и надо копать. Как спринг работает с ролями.
Чел выше предложил в виде фильтров. Но наверно и декларативно что-нить есть.
...
Рейтинг: 0 / 0
11.05.2016, 14:13
    #39233399
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring Security. Три атрибута авторизации. (Логин+Пароль+Компания)
вадяили всё отданно тупым прокладкам?
я верю.
Это у тебя тоже прокладки:
https://ru.wikipedia.org/wiki/Список_кодов_состояния_HTTP
...
Рейтинг: 0 / 0
11.05.2016, 14:18
    #39233407
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring Security. Три атрибута авторизации. (Логин+Пароль+Компания)
Petro123вадяили всё отданно тупым прокладкам?
я верю.
Это у тебя тоже прокладки:
https://ru.wikipedia.org/wiki/Список_кодов_состояния_HTTP
это не прокладки - это стандарты для работы.
а если отдано на откуп прокладкам - они работают строго по своим правилам и должны отдать эти страницы.
когда встречается более сложная ситуация - прокладки вступают в ступор.
я привел образец кода на котором это "не прокладочная ситуация" решается просто.
...
Рейтинг: 0 / 0
11.05.2016, 14:22
    #39233411
TepKuH
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring Security. Три атрибута авторизации. (Логин+Пароль+Компания)
Парни,
Вы тут везде предлагаете реализовать роли на сколько я вас понял.
Т.е. ввел юзер логин и пасс. Ему фигак роль: аля PRE_AUTH_ROLE. Выбрал компанию ему фигак роль FULL_ACCESS_ROLE.
Но дело в том что после уже ввода логина и пароля юзер будет считаться авторизованным. Т.е. метод isAuthenticated() в JSP будет возвращать true. А мне не хотелось бы переделывать кучи JSP'ишек где стоит такая проверка.
...
Рейтинг: 0 / 0
11.05.2016, 14:50
    #39233434
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring Security. Три атрибута авторизации. (Логин+Пароль+Компания)
вадяэто не прокладки - это стандарты для работы.
ты определись тогда. Что у тебя базовые знания Java, а что "прокладки".
я тебе привёл именно базовые знания студента в Java.
Браузер УЖЕ знает что делать на 401.
...
Рейтинг: 0 / 0
11.05.2016, 14:56
    #39233444
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring Security. Три атрибута авторизации. (Логин+Пароль+Компания)
TepKuHТ.е. метод isAuthenticated() в JSP будет возвращать true.
т.е. это ты сам накосячил?
Т.к. у спринга много чего есть:
- механизма голосования основанного на ролях (RoleVoter)
- Настройка агрегации управления доуступом
- 25 уже готовых фильтров перед каждым запросом
- контекст авторизации, который прошит во всех местах кода (проверить твой параметр)
Много чего есть, я глянул.
Ты взял базовый фильтр /* url mapping ROLE_USSER и всё?
А настроить? ))
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring Security. Три атрибута авторизации. (Логин+Пароль+Компания) / 25 сообщений из 41, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]