2017-04-26 35 views
6

Mam wiele aplikacji internetowych działających w wielu domenach. Chcę wdrożyć logowanie jednokrotne, aby użytkownik logował się raz, aby uzyskać dostęp do wszystkich aplikacji.Jak wykonać pojedyncze logowanie przy użyciu NodeJS?

Jak mam to wdrożyć? Wszystkie aplikacje korzystają z zaplecza NodeJS.

Ogólne wskaźniki w dobrym kierunku są mile widziane.

Odpowiedz

9

Ponieważ Twoje aplikacje działają w różnych domenach, nie można w żaden sposób udostępniać plików cookie między tymi aplikacjami działającymi na komputerze klienta w celu sprawdzania poprawności użytkownika. Więc w jakiś sposób informacje muszą być udostępniane na końcu serwera. Najprostszy rozwiązanie, które przychodzi mi na myśl jest-

  1. mają wspólną sesję dla wszystkich serwerów.

  2. Domena uwierzytelniania Hava i przekierowywanie użytkowników tam, gdzie wymagana jest autoryzacja. Uwierzytelnij użytkownika i ustaw plik cookie lub token sesji, jak tylko chcesz.

  3. Ilekroć jakakolwiek aplikacja wymaga uwierzytelnienia, należy przekierować ją do domeny uwierzytelniania. Plik cookie uwierzytelnienia zostanie dostarczony do domeny uwierzytelniania, a także do domeny strony odsyłającej. Po sprawdzeniu poprawności serwera uwierzytelniania można przekierować użytkownika do oryginalnej aplikacji z odpowiednim identyfikatorem sesji, który zostanie ustawiony jako plik cookie dla tej domeny.

  4. Jeśli nie zostanie uwierzytelniony, użytkownik zostanie poproszony o uwierzytelnienie na serwerze uwierzytelniającym, a następnie nastąpi przekierowanie.

  5. Przy niewielkich zmianach można to osiągnąć za pomocą tokenów i bez konieczności udostępniania sesji.

Sprawdź poprawność stanów przed jego wdrożeniem. Więcej stanów w twoim mechanizmie oznacza większe szanse na błędy i możliwe ataki.
Rozważ przeniesienie aplikacji w tej samej subdomenie. Jeśli mechanizm uwierzytelniania jest taki sam, wszyscy wiedzą, że wszystkie aplikacje należą do tej samej firmy. Łatwiej będzie też zapamiętać różne subdomeny w tej samej domenie, niż zapamiętać wszystkie inne domeny.

1

Najczęściej używany projekt to http://passportjs.org/, który jest właściwie jedynym, którego używam, ma świetne złącza do rozwiązań lokalnych, takich jak ADFS i innych firm, takich jak Google, Facebook.