2013-07-22 3 views
13

Ich versuche herauszufinden, die beste Möglichkeit, Benutzerauthentifizierung für meine mobile Anwendung (iOS & Android) und API (PHP) zu behandeln.Was ist ein API Token

Von dem, was ich recherchiert habe die Optionen sind:

Grund Auth über HTTPS - Überprüfen Sie Benutzername/Passwort des Benutzers für jede Anforderung.

Sitzungen - Senden Sie eine Sitzungs-ID mit jeder Anfrage; Server behält den Status bei. So App sendet Benutzername/Passwort und Server prüft auf einen eingeloggten Benutzer bei nachfolgenden Anfragen, genau wie meine Website.

API-Token - Die mobile Anwendung sendet Benutzername/Passwort und erhält ein Token zurück, das dann an nachfolgende Anfragen angehängt wird. Token in DB gespeichert und bei jeder Anfrage überprüft.

Ich vermute, dass meine Erklärung der API-Token ist falsch, da sie identisch mit Sitzungen scheinen, weil ich Sitzungs-IDs in der Datenbank speichern.

  1. Könnte meine Erklärung der API-Token korrigiert werden. Wofür sind sie? Wie unterscheiden sie sich von Sitzungs-IDs?
  2. Was sind die Vorteile von API-Tokens?
  3. Ist oAuth (wenn wir seine Verwendung vereinfachen sollten) nur ein Protokoll zum Erstellen von "API-Tokens"?

Antwort

16

Ich bin kein Experte, aber ich gebe Ihnen ein paar Cent Ich habe abgeholt:

1) API-Token ist ein bisschen ein allgemeiner Begriff. Normalerweise ist ein API-Token eine eindeutige Kennung einer Anwendung, die Zugriff auf Ihren Dienst anfordert. Ihr Dienst generiert ein API-Token, das die Anwendung bei der Anforderung Ihres Service verwenden kann. Sie können dann das Token, das sie bereitstellen, mit demjenigen abgleichen, das Sie speichern, um sich zu authentifizieren.

Eine Sitzungs-ID kann verwendet werden, aber ihr Zweck unterscheidet sich vom API-Token. Die Sitzungs-ID ist keine Form der Authentifizierung, sondern ein Ergebnis der Autorisierung. In der Regel wird eine Sitzung eingerichtet, sobald ein Benutzer zur Verwendung einer Ressource autorisiert wurde (z. B. Ihr Dienst). Daher wird eine Sitzungs-ID erstellt, wenn einem Benutzer der Zugriff auf eine Ressource gewährt wird. Ein API-Token ist die Form der Authentifizierung ähnlich einem Benutzernamen/Passwort.

2) API-Token sind ein Ersatz für das Senden einiger Benutzername/Passwort-Kombination über HTTP, die nicht sicher ist. Es besteht jedoch weiterhin das Problem, dass jemand stattdessen das API-Token verwenden und verwenden kann.

3) In gewisser Weise ja. Es ist eine Methode, API-Token "frisch" zu halten. Anstatt das gleiche API-Token weiterzugeben, fordern Sie ein Zugriffstoken an, wenn Sie einen Dienst verwenden möchten. Die OAuth 2.0 Schritte sind wie folgt:
      a) Antrag mit Anmeldeinformationen von einer Art
      b) Erfolgreiche Antwort zurück mit einem Code-
      c) Eine weitere Anforderung an Service wird Service gesendet der Code
      d) Erfolgreiche Antwort gibt das Zugriffstoken zum Signieren jeder API-Anfrage von dann bis zum Ende zurück.

Viele der größeren Dienstanbieter verwenden derzeit OAuth 2.0. Es ist keine perfekte Lösung, aber es ist wahrscheinlich die sicherste, weit verbreitete API-Sicherheitsmethode, die derzeit verwendet wird.

+0

Können Sie näher auf "Die Session-ID ist keine Form der Authentifizierung, sondern eine Folge der Autorisierung."? – paul

+0

Aktualisiert meine Antwort, in Kürze - Die Session-ID ist keine Form der Authentifizierung, das API-Token ist. –

+0

Sie sagen, ein API-Schlüssel identifiziert nur Anforderungen, die von meiner App kommen, und hat nichts damit zu tun, dass sich ein Benutzer über die App anmeldet? Nach dem, was ich gelesen habe, sollte meine API statusfrei sein und keine Sitzungen verwenden. – paul