6

Я пишу приложение AngularJS SPA, которое вызывает Rest полный веб-сервис. Задний конец записывается на JAX-RS, развернутый на Tomcat 7. Я использую HTTPS, SSL для передачи данных от SPA к JAX-RSУгловой JS SPA с использованием аутентификации LDAP

требования

  1. Я должен сделать проверку подлинности LDAP. (Я пошлю имя пользователя & пароль для веб-службы, и он должен сделать проверку подлинности)
  2. я должен сделать управление сеансом пользователя (потому что, когда проверка подлинности пользователя посылает запрос на веб-сервиса, пользователь не должен проверять подлинность снова)

проблемы

  1. Я думаю, что есть два варианта делать аутентификации LDAP:

    • Сделать аутентификацию LDAP с использованием ядра java http://docs.oracle.com/javase/jndi/tutorial/ldap/security/ldap.html
    • Использовать весеннюю безопасность (я не знаком с этим и не уверен, что это возможно. Я думаю, что я должен отправить имя пользователя & пароль для отдыха. В программе Rest будет загружена библиотека безопасности весны, и будет возможно использовать функции аутентификации. Я прав?)
  2. Управление сеансами пользователя. Как только пользователь аутентифицируется, он должен быть где-то сохранен, чтобы пользователь мог выполнять операции до тех пор, пока его вход в систему не истек. Как я могу это сделать?


Какой способ выбрать? Как мне сделать LDAP аутентификация и управление сеансом?


Можно ли дать какие-либо предложения или пример связывает?

ответ

7

Так,

  1. Аутентификация LDAP с помощью JNDI работает просто отлично, вы можете также использовать аккуратную UnboundID LDAP Java API. Простой пример привязки LDAP можно найти здесь: https://code.google.com/p/ldap-sample-code/source/browse/trunk/src/main/java/samplecode/bind/SimpleBindExample.java.

Заметим также, что вы можете использовать модуль Node.js в качестве серверной, в рамках Passport.JS аутентификации, например, предоставляет множество опций/возможностей относительно аутентификации и Федерации (то есть, делать такие вещи, как «Вход с Google "и т. Д.). См.: passportjs.org.

  1. На угловой/внешней стороне лучше всего использовать токен JWT. Здесь подробно объясняются примеры: http://code.tutsplus.com/tutorials/token-based-authentication-with-angularjs-nodejs--cms-22543.

В сущности:

  • ваш бэкенд аутентификации REST должен возвращать JWT токен в ответ, как только пользователь успешно связывается с LDAP. Этот токен будет содержать некоторые пользовательские данные и должен быть зашифрован (см. Ссылку выше).
  • Ваше Угловое приложение должно установить этот токен в качестве файла cookie на клиентском браузере (заголовок ответа «set-cookie») при успешном входе в систему (например, в Контроллере вашего входа в систему).
  • Клиент будет представлять этот файл cookie/JWT Token по каждому запросу, который он делает для вашего приложения.
  • Затем ваше приложение должно подтвердить токен, указанный по каждому запросу (в контроллере вашего SPA). Вы также можете добавить данные проверки подлинности пользователя в область $ scope, чтобы вы могли использовать их в своем представлении.

Надеется, что это помогает ...

+0

Спасибо! Я прочитал эту статью, но до сих пор неясно, зачем мне сохранять токен JWT в cookie вместо простого идентификатора сеанса (возвращаемого с сервера). Это более безопасно? – mariami

+1

JWT не являются «более безопасными», но они являются лучшим способом представления информации аутентификации. Вы все равно должны убедиться, что вы используете файлы cookie. Я написал статью о Single Pages Apps и JWT, вы можете найти ее здесь: https://stormpath.com/blog/token-auth-spa/ – robertjd

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