Tworzę prosty interfejs API za pomocą Rails API i chcę się upewnić, że jestem na dobrej drodze. Używam devise do obsługi logowań i zdecydowałem się na token_authenticatable
opcję Devise , która generuje klucz API, który musisz wysłać z każdym żądaniem.
Łączę API z front-endem szkieletowym / marionetkowym i ogólnie zastanawiam się, jak mam obsługiwać sesje. Moją pierwszą myślą było po prostu przechowywanie klucza API w pamięci lokalnej lub pliku cookie i pobieranie go podczas ładowania strony, ale coś w przechowywaniu klucza API w ten sposób przeszkadzało mi z punktu widzenia bezpieczeństwa. Czy nie byłoby łatwo złapać klucz API, przeszukując lokalną pamięć / plik cookie lub węsząc każde żądanie, które przechodzi i używać go do podszywania się pod tego użytkownika w nieskończoność? Obecnie resetuję klucz API przy każdym logowaniu, ale nawet to wydaje się częste - za każdym razem, gdy logujesz się na dowolnym urządzeniu, oznacza to, że będziesz wylogowywany na każdym innym, co jest trochę uciążliwe. Gdybym mógł porzucić ten reset, czuję, że poprawiłby się z punktu widzenia użyteczności.
Mogę się tu całkowicie mylić (i mam nadzieję, że się mylę), czy ktoś może wyjaśnić, czy uwierzytelnianie w ten sposób jest niezawodnie bezpieczne, a jeśli nie, jaka byłaby dobra alternatywa? Ogólnie rzecz biorąc, szukam sposobu, w jaki mogę bezpiecznie utrzymywać użytkowników „zalogowanych” w dostępie do interfejsu API bez częstego wymuszania ponownego uwierzytelniania.