2016-08-20 44 views
5

buduję następujące:Bezpieczne uwierzytelnianie/autoryzacja w pojedynczej strony Aplikacja

  • javascript pojedynczej strony Aplikacji;
  • Backend Node.js odsłaniający RESTful API, który będzie przechowywać dane użytkownika;

Poświadczenia użytkownika (adres e-mail/hasło) można tworzyć za pomocą aplikacji pojedynczej strony i są przechowywane w backendach. Nie ma potrzeby interakcji z zewnętrznymi dostawcami, takimi jak Facebook Login,, ale może to być konieczne w przyszłości.

Aplikacja pojedynczej strony powinna wchodzić w interakcję z serwerem zaplecza za pośrednictwem interfejsu API RESTful, po uwierzytelnieniu użytkownika przy użyciu jego poświadczeń.


jestem stara się zrozumieć, w jaki sposób skonfigurować uwierzytelnianie i autoryzację w oparciu o poświadczenia, w sposób, który jest zarówno bezpieczny i zgodny z ograniczeniami wynikającymi z pojedynczą stronę Aplikacji.

znalazłem informacje o OAuth 2.0 i JSON Web Tokens. Nie mogę sobie wyobrazić sposobu, w jaki powinienem używać tych technologii, aby osiągnąć mój cel końcowy, niezależnie od tego, czy mają współpracować razem, czy niezależnie, i staram się uświadomić sobie pułapki, które towarzyszą wszystkim.


można podać krótki kurs korzystania z etapów i elementów potrzebnych do zbudowania udanego mechanizm uwierzytelniania/autoryzacji dla pojedynczej strony aplikacji z niestandardowych backend, jeśli to możliwe, obejmujące następujące zagadnienia, a także:

  • Zalety/wady stosowania OAuth 2.0 w porównaniu do JWT lub innych metod;
  • Używanie plików cookie w przeciwieństwie do przechowywania tokenów na różne sposoby (np. LocalStorage) i implikacje dla bezpieczeństwa;

Odpowiedz

0

Możesz używać JWT bez Oauth2 i Oauth2 bez JWT lub używać ich razem.

Należy pamiętać, że OAuth2 zarządza autoryzacjami, a nie uwierzytelnianiem. OAuth2 nie przeszkadza w uwierzytelnianiu użytkownika. Aby poradzić sobie z uwierzytelnianiem, tou może przyjrzeć się OpenId Connect, warstwie na górze Oauth2. OpenId Connect wyśle ​​do Twojej aplikacji podpis id_token zawierający informacje o tożsamości użytkownika.

Po uwierzytelnieniu użytkownika za pomocą usługi OpenId Connect można skontaktować się z serwerem OAuth, aby uzyskać hasło access_token (JWT lub nie). Ten token będzie używany do kontaktowania się z interfejsem API. W przypadku aplikacji SPA zalecana jest wersja Implicit Grant flow.

Dla JWT jest używany dla id_token (z OpenId Connect) i może być użyty dla access_token (OAuth2). Dla access_token twój token może być referencyjny (zalecany dla SPA) lub według wartości.

Odwołanie tokena jest nieprzejrzyste dla klientów (np. Guid). Według wartości Twój token jest parsable i zawarte dane mogą być czytane przez klientów.

W przypadku komponentów do użytku osobiście współpracuję z wersją Keycloak firmy RedHat.

Mam nadzieję, że to pomaga.