Best Practices für Android OAuth2 Bearer-Token

9

Dieses nette Tutorial ist eine sehr gute Einführung in das Konto Authentifizierung auf Android und tun dies durch Android AccountManager .

Ich muss jedoch eine Client-App für eine OAuth2-API erstellen, die ein Bearer-Token für die Authentifizierung verwendet. Zum Zeitpunkt des Erhalts des Tokens erhalte ich den Ablaufzeitstempel dafür, aber ich weiß nicht genau, wo ich diese speichern und wie ich sie richtig nutzen kann. Das Problem ist, wenn ich keine unnötigen Trips zum Server haben möchte, würde die App erkennen, dass der Bearer nur ungültig geworden ist, nachdem er einen HTTP 401-Fehler vom Server erhalten hat, wenn er eine beliebige Ressource angefordert hat. Also, was ist die beste Methode, um dies anzugehen:

  1. Sollte jede Netzwerkanforderung in meinem Code einen Wiederholungsmechanismus haben, falls das Bearer-Token in der Zwischenzeit ungültig geworden ist? Ich würde wahrscheinlich invalidateAuthToken wenn die Ausnahme abgefangen und erneut versucht wird.
  2. Kann Sync Adapter irgendwie hier helfen?

Da ich neu in der Android-Entwicklung bin, erwarte ich, dass die Lösung auch etwas völlig anderes ist, als ich es erwarte.

Wenn es relevant ist, beabsichtige ich, Volley für die Kommunikation mit dem Server zu verwenden.

    
nekojsi 17.12.2013, 18:41
quelle

2 Antworten

9

Ich habe nach ein bisschen Nachforschung meine eigenen Antworten herausgefunden:

  1. Ja, der Aufruf von AccountManager#invalidateAuthToken entfernt das zuletzt gespeicherte Authentifizierungstoken (Zugriffstoken im Fall OAuth2) und erwartet, dass Sie dies beim nächsten AccountAuthenticator#getAuthToken -Aufruf feststellen. Zum Beispiel ist der folgende Code für diese Methode:

    %Vor%

    Ich erhielt auch eine Bestätigung vom Autor des Blogpost in der Frage erwähnt.

  2. SyncAdapter s kann nicht direkt helfen, da ihr wahrer Zweck darin besteht, Daten asynchron (für den Entwickler) und transparent (für den Benutzer) aus dem Netzwerk zu beziehen. Sie verwenden einfach AbstractAccountAuthenticator und rufen gegebenenfalls ihre Methoden auf.

nekojsi 28.01.2014, 13:12
quelle
1

Ich habe das gleiche Problem schon einmal durchgespielt und mache diese Bibliothek , um OAuth2 in Android zu bearbeiten. Die Bibliothek ist jedoch eine Erweiterung für Retrofit, die den Prozess der Authentifizierung gegenüber einem OAuth 2-Anbieter vereinfacht, aber Sie können ihn dennoch verwenden.

    
abozaid 01.10.2015 12:43
quelle