2014-12-17 4 views
1

Я видел множество примеров, где есть пользовательская страница входа с помощью Angular JS, а затем мы отдыхаем POST-вызов с именем пользователя/pwd, а затем Spring аутентифицируется на основе Auth Service мы предоставляем. Затем мы получаем успех, захватываем пользовательский объект из Spring Security, а затем создаем cookie сеанса в Angular. https://github.com/witoldsz/angular-http-auth/blob/master/src/http-auth-interceptor.jsSiteminder SSO + Spring Security + Angular JS

Я также видел, интегрируя Siteminder с Spring Security, где мы устанавливаем агент политики на веб-сервере, а затем захватываем заголовки запросов с помощью Spring Security, а затем вытягиваем роли и создаем объект профиля пользователя.

Я ищу решение, в котором я могу комбинировать оба вышеуказанных. Это сценарий:

Когда пользователь запрашивает index.html (Угловое), агент политики на веб-сервере перехватывает, проходит проверку подлинности на странице входа в систему Siteminder, а затем передает заголовки на сервер приложений. Spring Security на сервере приложений прочитает заголовки и вытащит роли из нашей базы данных приложений, а затем создаст объект userprofile. Теперь я хочу продолжить поток и отобразить угловую страницу, но Im пытается выяснить, как мне отправить объект профиля пользователя на угловое, потому что угловой не вызывает POST-вызов в этот момент. Кроме того, как мне получить http-auth-interceptor в игре, потому что мне нужно продолжать проверять, все ли еще пользователь аутентифицирован при изменении каждого вида/состояния в Angular.

Помогите оценить! Благодаря !

+0

Пожалуйста, обновите ссылку. –

+0

@DonaldDuck: Done – PavanSandeep

ответ

2

Вы можете реализовать крошечную услугу JSON REST «/ your-app/profile», которая защищена SiteMinder, считывает и оценивает заголовки и возвращает результат как объект JSON.

Ваше угловое приложение (например, /your-app/index.html) должно быть также лучше защищено SiteMinder, поэтому вы получаете немедленную переадресацию на вход SSO при доступе к нему без сеанса. Кроме того, при загрузке он должен прочитать ресурс JSON REST «/ your-app/profile». Также необходимо ожидать, что SMSESSION отсутствует при чтении «/ your-app/profile» и соответственно отреагирует - выполните перезагрузку защищенной страницы index.html, чтобы инициировать повторный вход SS SSO (если «/ your-app/index. html ", в противном случае вы должны активировать логин путем перенаправления на некоторый защищенный ресурс).

Если вы хотите постоянно проверять, присутствует ли сеанс SiteMinder, вы можете либо получить доступ к «/ your-app/profile», либо проверить наличие cookie-сообщения SMSESSION (только в том случае, если он не установлен как HTTP-только).

1 ПРИМЕЧАНИЕ БЕЗОПАСНОСТИ: Если вы полагаетесь на автономный SSO, который предоставляется через cookie SMSESSION, имейте в виду возможные атаки CSRF (Cross-Site Request Forgery)!

+0

Но я буду создавать весеннюю сессию тоже правильно? У меня есть SMSESSION и JSESSION? – PavanSandeep

+0

Вы можете создать HttpSession (JSESSION), если это необходимо, но это не обязательно и не обязательно привязывается к SMSESSION. Если вы создаете HttpSession, вы должны проверить каждый запрос, если SMSESSION не изменился - в противном случае у вас может быть серьезная уязвимость. Имейте в виду, что использование сеансов в службах REST является признаком плохой архитектуры. –

+0

@VilmantasBaranauskas У меня такая же ситуация, как и вы, мы используем SiteMinder, угловатую и кордовую, чтобы вызвать Rest API за SiteMinder. Но мы столкнулись с возвратом пользовательского интерфейса. Мой вопрос заключается в том, как реализовать это для вызова API? – JimiOr2

Смежные вопросы