/ / Angular JS SPA z uwierzytelnianiem LDAP - angularjs, spring-security, ldap, jax-rs, single-page-application

Angular JS SPA z uwierzytelnianiem LDAP - angularjs, spring-security, ldap, jax-rs, single-page-application

Piszę AngularJS Aplikacja SPA, która wywołuje Rest full web service. Back-end jest zapisywany JAX-RS, wdrożony na Tomcat 7. Używam HTTPS, SSL do przesyłania danych z SPA do JAX-RS

wymagania

  1. Muszę uwierzytelnić LDAP. (Wyślę nazwę użytkownika i hasło do serwisu internetowego i powinien on uwierzytelniać)
  2. Muszę zarządzać sesją użytkownika (ponieważ, gdy uwierzytelniony użytkownik wysyła żądanie do usługi sieciowej, użytkownik nie musi ponownie się uwierzytelniać)

problemy

  1. Sądzę, że są dwie opcje wykonywania uwierzytelniania LDAP:

    • Uwierzytelnianie LDAP za pomocą core java http://docs.oracle.com/javase/jndi/tutorial/ldap/security/ldap.html
    • Użyj zabezpieczenia Spring (nie jestem tego zaznajomiony inie jestem pewien, czy to jest możliwe.Myślę, że powinienem wysłać nazwę użytkownika i hasło do usługi rest. Usługa Rest ma wstrzykniętą bibliotekę bezpieczeństwa i będzie można korzystać z funkcji uwierzytelniania. Czy mam rację?)
  2. Zarządzaj sesjami użytkowników. Po uwierzytelnieniu użytkownika należy go gdzieś zapisać, aby użytkownik mógł wykonywać operacje do momentu wygaśnięcia jego logowania. Jak mogę to zrobić?


Której powinienem wybrać? Jak powinienem zrobić Uwierzytelnianie LDAP i zarządzanie sesją?


Czy ktoś może dać sugestia lub przykładowe linki?

Odpowiedzi:

8 dla odpowiedzi № 1

Więc,

  1. Uwierzytelnianie LDAP za pomocą JNDI działa dobrze, można także użyć czystego API Java bez ograniczeń ID. Prosty przykład powiązania LDAP można znaleźć tutaj: https://code.google.com/p/ldap-sample-code/source/browse/trunk/src/main/java/samplecode/bind/SimpleBindExample.java .

Zauważ również, że możesz użyć węzła.Moduł JS jako twój backend, na przykład, framework Passport.JS Authentication, zapewnia wiele funkcji / możliwości związanych z uwierzytelnianiem i federacją (np. Takie rzeczy jak "Zaloguj się z Google" itp.). Widzieć: passportjs.org.

  1. Po stronie Angular / frontend najlepiej jest użyć tokena JWT. Zostało to szczegółowo objaśnione przykładami tutaj: http://code.tutsplus.com/tutorials/token-based-authentication-with-angularjs-nodejs--cms-22543.

W istocie:

  • backend Uwierzytelnianie REST powinien zwracać token JWT w odpowiedzi, gdy użytkownik pomyślnie powiąza się z LDAP. Ten Token zawierałby pewne dane użytkownika i powinien być zaszyfrowany (patrz link powyżej).
  • Twoja aplikacja Angular powinna ustawić token jako plik cookie w przeglądarce klienta (nagłówek odpowiedzi "ustaw plik cookie") po pomyślnym zalogowaniu się (czyli w kontrolerze widoku logowania).
  • Klient następnie przedstawi to ciasteczko / token JWT na każde żądanie zgłoszone do Twojej aplikacji.
  • Twoja aplikacja będzie musiała zweryfikować tokenprezentowane na każde żądanie (w kontrolerze twojego SPA). Możesz także dodać dane uwierzytelniające użytkownika do swojego $ scope, aby móc go używać w swoim widoku.

Mam nadzieję, że to pomoże...