2016-08-08 53 views
8

Używam OAuth jak:Przechowywanie tokeny dostępu i przenoszenia ich wygasania

  1. metodą wtórnej podpisać użytkowników do mojej aplikacji internetowej (zamiast ręcznie dostarczając swoje nazwisko, e-mail i hasło)
  2. sposób otrzymywać w celu otrzymywania danych użytkownika w całej witrynie.

co byłoby uznane za najlepsze praktyki podczas przechowywania tokeny dostępu? Mam dwie opcje: tokeny dostępu

  1. Przechowywać w cookie
  2. tokeny
  3. dostępu Przechowywać w bazie

Jakie są zalety i wady obu wyboru?


Co należy zrobić, aby poradzić sobie z tym terminem?

Jednym ze sposobów, w jaki mogę sobie z tym poradzić, jest sprawdzenie, czy wystąpił błąd podczas wywoływania interfejsu API, a więc żądanie nowego tokenu i ponowne wywołanie interfejsu API. Czy jednak, żądając nowego tokena, będę wymagać od użytkownika ponownego zalogowania się? Wyobrażam sobie, że byłby to problem, gdy strona na mojej stronie wymaga danych z Facebooka, ale aby ją odzyskać, użytkownicy muszą się ponownie zalogować.

Nie rozumiem, w jaki sposób innym stronom udaje się utrzymać dostęp do Facebooka, Google lub Twitter API bez konieczności ponownego logowania, zwłaszcza gdy jestem na innym urządzeniu, na którym nie zalogowałem się wcześniej na Facebooku, Twitterze lub Google. Jak oni to robią? Dzięki.

Odpowiedz

4

Jeśli autoryzacja jest przeprowadzana za pomocą Google OAuth2.0. Google udostępnia dwa tokeny, a mianowicie token dostępu i odświeżenie tokena.

Żetony dostępu mają ograniczoną żywotność przez 3600 sekund, ale odświeżone żetony są ważne przez dłuższy czas.

Token odnowienia również wygasa. Czytaj „Reklamowe ważności” odcinek Google OAuth2.0 linku

można uzyskać nowy token dostępu z tokena odświeżania bez ponownego logowania. ReST api

Można więc wprowadzić logikę, aby sprawdzić czas, który upłynął od wygenerowania tokenu dostępu, i podjąć kroki zapobiegawcze w celu wygenerowania nowego tokenu dostępu. Tokeny Google tracą ważność po 3600 sekundach, więc można uzyskać token dostępu po każdych 3500 sekundach i zaktualizować stary token dostępu przechowywany z nowym do dalszego użytku. Również jeden inny sposób może być, aby ustawić odświeżania token GoogleCredential który jest przekazywany jako parametr (httpRequestInitializer) podczas tworzenia usługi jakiegokolwiek API. (Na przykład poszukać Drive.Builder)

Jeśli nie są przechowywane odświeżania token z których dostęp token można zregenerować, musisz ponownie uwierzytelnić, aby uzyskać nowy token.