Piszę aplikację zabawkową do ćwiczenia mikroserwisów i uwierzytelniania na nodejs (expressjs).Architektura uwierzytelniania mikroserwisów z passport.js
Mam klienta reakcji, usługę uwierzytelniania i inne usługi (po prostu odpowiadają "Cześć" do tej pory).
- Klient będzie hostowany w CDN.
- Usługa autoryzacji nasłuchuje na porcie 5000 (na przykład)
- Pozostałe usługi nasłuchują na porcie 6000-6100.
- Mam db do przechowywania informacji o sesji (oauth token dostarczany przez twitter).
- Mondzieb, w którym przechowywane są informacje o aplikacji (nie dotyczy tego pytania).
Chodzi o to, że nieuwierzytelniony klient przechodzi do usługi uwierzytelniania, klikając przycisk Twitter (SSO). Następnie usługa auth uzyskuje wygenerowany token przysięgi twitter i ustawia ten token w magazynie redis. Następnie token jest dostępny dla pozostałych usług, dzięki czemu wie, czy żądanie zostało uwierzytelnione, czy też nie, sprawdzając, czy już istnieje w magazynie redis (jeśli użytkownik usunie swoje konto, zostanie również usunięte z magazynu redis) . Po uwierzytelnieniu przesyłaję token twittera z klienta na serwer.
Uważam to podejście dość proste (inni używają proxy Nginx do uwierzytelniania, ale nie widzę powodu, dla, że z wyjątkiem, jeżeli usługi te są przechowywane w różnych dziedzinach, ale nie rozumiem, to bardzo dobrze) więc obawiam się, że brakuje mi czegoś na temat bezpieczeństwa, na przykład.
Pytania:
- Czy to podejście prawidłowe?
- Czy bezpieczne jest udostępnianie tokena Twittera (tak mi się wydaje)?
- Czy jest jakiś problem z bezpieczeństwem, którego tu nie dostrzegam?