6

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

wymagań

  1. muszę zrobić uwierzytelniania LDAP. (Poślę nazwę użytkownika & hasło do usługi internetowej i powinien dokonać uwierzytelnienia)
  2. muszę zrobić zarządzanie sesją użytkownika (ponieważ, gdy uwierzytelniony użytkownik wysyła żądanie do usługi internetowej, użytkownik nie musi ponownie uwierzytelnić)

problemy

  1. Myślę, że są dwa sposoby prowadzenia uwierzytelniania LDAP:

    • Uwierzytelnianie LDAP za pomocą rdzenia java http://docs.oracle.com/javase/jndi/tutorial/ldap/security/ldap.html
    • Użyj zabezpieczenia Spring (nie jestem tego obeznany i nie jestem pewien, czy jest to możliwe. Myślę, że powinienem wysłać nazwę użytkownika & hasło, aby odpocząć. Usługa odpoczynku zostanie wyposażona w bibliotekę bezpieczeństwa sprężyn i będzie można korzystać z funkcji uwierzytelniania. 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óry sposób powinienem wybrać? W jaki sposób należy wykonać uwierzytelnianie LDAP podczas uwierzytelniania i zarządzania sesją ?


Czy ktoś może dać żadnej sugestię lub przykład łączy?

Odpowiedz

7

Więc

  1. uwierzytelniania LDAP przy użyciu JNDI działa dobrze, można również użyć schludny API UnboundID LDAP Java. Prosty przykład LDAP Bind można znaleźć tutaj: https://code.google.com/p/ldap-sample-code/source/browse/trunk/src/main/java/samplecode/bind/SimpleBindExample.java.

Należy również pamiętać, że można użyć modułu Node.JS jako zaplecza, na przykład w ramach uwierzytelniania Passport.JS zapewnia wiele funkcji/możliwości w odniesieniu do uwierzytelniania i federacji (np. Google ", etc ...). Zobacz: passportjs.org.

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

W istocie:

  • Twój backend REST Autoryzacja powinien zwrócić JWT Token w odpowiedzi, gdy użytkownik pomyślnie wiąże się z LDAP. Ten Token zawierałby pewne dane użytkownika i powinien być zaszyfrowany (patrz link powyżej).
  • Twoja Angularna aplikacja powinna ustawić token jako plik cookie w przeglądarce klienta (nagłówek odpowiedzi "ustaw plik cookie") po pomyślnym zalogowaniu się (czyli w kontrolerze twojego 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ć token przedstawiony na każdym wniosku (w kontrolerze twojego SPA). Możesz również dodać dane uwierzytelniające użytkownika do swojego $ scope, aby można było z niego korzystać w widoku.

Nadzieja to pomaga ...

+0

Dziękujemy! Czytałem ten artykuł, ale nadal nie jest jasne, dlaczego powinienem zapisać token w pliku cookie zamiast prostego identyfikatora sesji (zwrócony z serwera). Czy to jest bezpieczniejsze? – mariami

+1

JWT nie są "bezpieczniejsze", ale stanowią lepszy sposób reprezentowania informacji uwierzytelniających. Nadal musisz się upewnić, że używasz plików cookie w bezpieczny sposób. Napisałem artykuł na temat aplikacji na jedną stronę i JWT, można go znaleźć tutaj: https://stormpath.com/blog/token-auth-spa/ – robertjd