Mam dwie aplikacje:Utrzymanie tajny klucz i token dostępu do JWT w Express i NodeJS z Facebook w Rest API
- serwer (REST API serwera)
- węzła js
- ekspresowe
- jsonwebtokens
- express-jwt
- mangusta
- klient (Portable Czołowy)
- bootstrap
- Angular JS
- lokalnego przechowywania
- kątowe-facebook
- kątowe-JWT
lateron, aplikacja kliencka zostanie przeniesiona na Androida, iPhone'a i inne platformy za pomocą phon egap. W przypadku OAuth używam Facebooka jako dostawcy. Teraz, po prostu zdałem sobie sprawę, że Jenson Web Token to sposób na zrobienie tego typu konfiguracji. Moje pytanie jest raczej architektoniczne niż syntaktyczne - jak zarządzać tajnym kluczem podczas podpisywania tokenu dostępu facebook i identyfikatora użytkownika z JWT w nodejs?
Tak to jest jak strumień działa w mojej aplikacji:
- kątowa klient posiada przycisk Login
- użytkownik kliknie przycisk> Facebook Auth zaczyna
- Client odbiera user_id i FB Token dostępu
- Klient wysyła [POST json body] zarówno ser_id i dostęp Reklamowe do pinowe + Express, Server w 'http://server.com/auth/login'
węzeł serwera zastosował ekspresowej JWT do wszystkich tras z wyjątkiem /auth/login z expressJwt
var = require ('express-jwt');
var jwt = require ('jsonwebtoken');
app.use (expressjwt ({secret: ''}). Unless ({ścieżka: ['/ auth/login']}));
serwer Węzeł odbiera dane z req.body, pobiera wszystkie dane z profilu facebook pomocą JavascriptSDK i znaki go za pomocą
var znacznik = expressjwt.sign ({profile},);
- Server Node sklepów (aktualizacje, jeśli user_id istnieje) nowego tokena w db i przesyła go jako odpowiedź na klienta
- klienta zapisuje nowy żeton otrzymaniu danych json w lokalnej-storage
- klient używa kątowe-JWT do pobierania danych profilu z nowego tokenu i automatycznie dołączyć nowy token w nagłówku autoryzacji dla wszystkich żądań to wysyła do serwera
Teraz moje pytania to:
- Czy naprawdę muszę przechowywać tokeny JWT w bazie danych? Z pewnością nie porównywanie tokenów w nagłówkach żądań z bazą danych
- Czy muszę generować losowe tajne klucze dla bezpieczeństwa, za każdym razem, gdy osoba się loguje? Jeśli tak, to w jaki sposób pasowałoby to zarówno do klienta, jak i do serwera?
- Kiedy i gdzie należy sprawdzić datę wygaśnięcia tokena? i Jak mogę go odświeżyć?
Jestem trochę zagubiony w kwestii przepływu projektu i mechanizmu.
więc wreszcie teraz, jak to robisz ?? używasz db do przechowywania unieważnionych tokenów lub co? proszę odpowiedzieć musi to będzie bardzo pomocne dla mnie –