2015-06-14 13 views
18

Moja aplikacja mobilna iOS pobiera usługi zaimplementowane przy użyciu protokołu OAuth2.0. Token dostępu OAuth jest dostarczany wraz z tokenem odświeżania i polem expires_in. W aplikacji zapisałem token odświeżania i dostęp do czasu wygaśnięcia tokena, ale nie mam pojęcia, kiedy go używać.Jak rozpoznać, czy token OAuth wygasł?

  • Jaka jest zwykle i najlepsza praktyka używania tego expires_in?
  • Jak rozpoznać, że mój token dostępu wygasł?
  • Czy istnieje wspólny format błędu usługi WWW, który mówi, że mój token dostępu wygasł?

Odpowiedz

29

Oto informacje o odświeżaniu tokenu OAuth 2.0.

wygaśnięcia przy definiowaniu

Standardowe OAuth 2.0 RFC 6749 określa pole expires_in jako liczbę sekund upływu:

expires_in: zalecane. Czas życia w sekundach token dostępu. Na przykład wartość "3600" oznacza, że ​​token dostępu wygaśnie w ciągu jednej godziny od czasu wygenerowania odpowiedzi. Jeśli zostanie pominięty, serwer autoryzacji POWINIEN podawać czas wygaśnięcia za pomocą innych środków lub udokumentować wartość domyślną.

Reklamowe Odśwież obchodzenia się: Metoda 1

Po otrzymaniu prawidłowej wartości access_token, expires_in, refresh_token itd klienci mogą przetwarzać ten przechowując zakresu czasu i sprawdzenie go na każde żądanie. Można to zrobić za pomocą następujących czynności:

  1. nawróconego expires_in do czasu wygaśnięcia (epoki, datetime ISO, etc.)
  2. przechowywać upływa czas
  3. na każde żądanie zasobów, sprawdzić aktualną godzinę przed wygaśnięciem czasu i zrobić tokenu żądania odświeżenia przed żądanie zasobu jeśli access_token wygasła

oprócz otrzymania nowego access_token może pojawić nowy refresh_token z czasem ważności f w przyszłości. Jeśli to otrzymasz, powinieneś zapisać nowy refresh_token, aby przedłużyć żywotność swojej sesji.

Reklamowe Odśwież obchodzenia się: Metoda 2

Innym sposobem obsługi tokenu odświeżania jest ręcznie odświeżyć po otrzymaniu nieprawidłowy błąd tokena. Można to zrobić za pomocą poprzedniego podejścia lub samodzielnie.

Jeśli spróbujesz użyć wygasłego access_token, a otrzymasz błąd nieprawidłowego tokena, powinieneś wykonać odświeżenie tokena (jeśli token odświeżania jest nadal ważny). Ponieważ różne usługi mogą wykorzystywać różne kody błędów dla wygasłych tokenów, możesz albo śledzić kod dla każdej usługi, albo prosty sposób na odświeżenie tokenów w różnych usługach to po prostu spróbuj jednego odświeżenia po napotkaniu błędu 4xx.

Nieprawidłowy token dostępu Błędy

Poniżej znajdują się niektóre kody błędów z popularnych usług:

  1. Facebook: Error 467 Invalid access token - Dostęp tokena wygasła, został unieważniony, lub w inny sposób nieprawidłowy - Handle wygasłe tokeny dostępu.
  2. LinkedIn: Error 401 Unauthorized.
  3. PayPal: Error 401 Unauthorized.

Odśwież Reklamowe ważności

Jeśli refresh_token wygasła również, trzeba będzie przejść przez proces autoryzacji ponownie.

+0

Witam, wielkie dzięki za odpowiedź! Podczas sprawdzania czasu wygaśnięcia, co jeśli użytkownik zmieni czas urządzenia? Czy nie spowoduje zbyt częstego odświeżania tokenu dostępu? A jeśli chodzi o sprawdzenie błędu nieprawidłowego tokena, czy masz jakiś pomysł na kod odpowiedzi i format błędu, który zwróci serwer OAuth? I czy będzie to odpowiedź błędu dla wszystkich serwerów OAuth? – XiOS

+0

Jakie są przypadki użycia w przypadku często występujących zmian czasu urządzenia? Zmiany strefy czasowej powinny być obsługiwane automatycznie. Ponieważ nieprawidłowy kod błędu tokena nie jest zdefiniowany w standardzie, różne usługi wybrały różne kody błędów wymienione powyżej. Prostym podejściem odświeżania może być próba pojedynczego odświeżenia po wystąpieniu błędu 4xx, jak wspomniano. – Grokify

Powiązane problemy