Uczę się uwierzytelniania opartego na tokenie przy użyciu tokenów internetowych JSON i oto, jak widzę to teraz dla aplikacji mobilnej, zbudowanej na przykład z Swift:Uwierzytelnianie na podstawie tokenu z aplikacji mobilnej
mogę utworzyć obiekt wewnątrz aplikacji przy użyciu danych wprowadzonych przez użytkownika, jak
{ nazwa: "patrickbateman" hasło: "ismyknifesharp" rola: "regular", . .. }
Następnie mogę wygenerować z niego token JWT z library.
- Następnie wysyłam go do obsługiwanego punktu końcowego API, np.
/api/contacts/list
. Czy muszę wysłać login/hasło, aby uwierzytelnić się? - Serwer w jakiś sposób sprawdza poprawność tokena. Ale jak? Czy token generowany przez serwer powinien być zapisany w bazie danych i używany jako klucz? Czy muszę generować token na serwerze za każdym razem, gdy otrzymuję żądanie od klienta i porównuję go z tokenem klienta?
- Uzyskaj i zarządzaj wszystkimi danymi, których potrzebuję.
Oto moje wnioski:
- nie muszę wysłać login/hasło do serwera parę do uwierzytelnienia użytkownika.
- Muszę wysłać token za każdym razem, gdy potrzebuję uzyskać dane tylko auth.
- Powinienem wdrożyć jakiś algorytm, który zmienia wygenerowany token ze względu na pewne czynniki, takie jak upływ czasu, aby uczynić tokeny expirable.
- Powinienem wysłać token wewnątrz nagłówków, ale niekoniecznie tak, jak to się dzieje w treści żądań JSON.
Czy te wnioski są prawidłowe? Jaki jest sposób sprawdzenia tokena wysyłanego przez klienta?
Dlaczego nie jest dobrym pomysłem zachowanie hasła i nazwy użytkownika po stronie klienta? W iOS możemy bezpiecznie przechowywać je w Keychainie? – user805981
Nawet jeśli możemy przechowywać je w bezpieczny sposób, ale nie ma z tego korzyści. Nie powinniśmy używać zapisanego hasła do ponownego logowania. Dobrym sposobem jest praca z tokenem lub wymaga ponownego podania hasła przez użytkownika za pomocą formularza logowania. – t4nhpt
Rozumiem. A jeśli użyjemy jwt i odświeżymy tokeny. Czy powinniśmy ustalić, czy jwt wygasł po stronie klienta przed wysłaniem jakichkolwiek żądań http? A może powinniśmy pozwolić jwt wygaśnięcia i dać 400 z powrotem do klienta przed wprowadzeniem cyklu odświeżania? – user805981