Was ist ein API-Token [closed]

Lesezeit: 4 Minuten

Benutzer-Avatar
paul

Ich versuche herauszufinden, wie ich die Benutzerauthentifizierung für meine mobile Anwendung (iOS und Android) und API (PHP) am besten handhabe.

Nach dem, was ich recherchiert habe, sind die Optionen:

Einfache Authentifizierung über HTTPS – Überprüfen Sie Benutzername/Passwort des Benutzers für jede Anfrage.

Sitzungen – Senden Sie bei jeder Anfrage eine Session-ID; Server behält Zustand bei. Die App sendet also Benutzername/Passwort und Serverprüfungen für einen angemeldeten Benutzer bei nachfolgenden Anfragen, genau wie meine Website.

API-Token – Die mobile App 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 geprüft.

Ich vermute, dass meine Erklärung von API-Token falsch ist, da sie mit Sitzungen identisch zu sein scheinen, da ich Sitzungs-IDs in der DB speichere.

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

Benutzer-Avatar
David Normington

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

1) API-Token ist ein etwas allgemeiner Begriff. Normalerweise ist ein API-Token eine eindeutige Kennung einer Anwendung, die Zugriff auf Ihren Dienst anfordert. Ihr Dienst würde ein API-Token generieren, das die Anwendung beim Anfordern Ihres Dienstes verwenden kann. Sie können dann das bereitgestellte Token mit dem von Ihnen gespeicherten abgleichen, um sich zu authentifizieren.

Eine Sitzungs-ID kann verwendet werden, ihr Zweck unterscheidet sich jedoch vom API-Token. Die Sitzungs-ID ist keine Form der Authentifizierung, sondern ein Ergebnis der Autorisierung. Normalerweise wird eine Sitzung eingerichtet, sobald ein Benutzer autorisiert wurde, eine Ressource (z. B. Ihren Dienst) zu verwenden. Daher wird eine Sitzungs-ID erstellt, wenn einem Benutzer 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 einer Kombination aus Benutzername und Passwort über HTTP, was nicht sicher ist. Es besteht jedoch weiterhin das Problem, dass jemand stattdessen den API-Token nehmen und verwenden könnte.

3) In gewisser Weise ja. Es ist eine Methode, um API-Token “frisch” zu halten. Anstatt dasselbe API-Token weiterzugeben, fordern Sie ein Zugriffstoken an, wenn Sie einen Dienst nutzen möchten. Die OAuth 2.0-Schritte sind wie folgt:
a) An den Dienst gesendete Anfrage mit irgendeiner Art von Anmeldeinformationen
b) Erfolgreiche Antwort gibt einen Code zurück
c) Mit dem Code erfolgt eine weitere Serviceanforderung
d) Eine erfolgreiche Antwort gibt das Zugriffstoken zum Signieren jeder API-Anforderung von da an bis zum Abschluss zurück.

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

  • Könnten Sie näher auf “Die Sitzungs-ID ist keine Form der Authentifizierung, sondern ein Ergebnis der Autorisierung” eingehen?

    – paul

    22. Juli 2013 um 11:19 Uhr

  • Kurz gesagt, meine Antwort wurde aktualisiert: Die Sitzungs-ID ist keine Form der Authentifizierung, das API-Token ist es.

    – David Normington

    22. Juli 2013 um 12:31 Uhr

  • Wollen Sie damit sagen, dass ein API-Schlüssel nur Anfragen identifiziert, die von meiner App kommen, und nichts damit zu tun hat, dass sich ein Benutzer über die App anmeldet? Denn nach dem, was ich gelesen habe, sollte meine API zustandslos sein und keine Sitzungen verwenden.

    – paul

    22. Juli 2013 um 12:47 Uhr

  • Das ist richtig. Das API-Token wird bei jeder Anfrage an den Dienst von der App übergeben, sodass der Dienst weiß, wer die Ressource anfordert. Ich empfehle auch nicht, Sitzungen zu verwenden, hast du gefragt;)

    – David Normington

    22. Juli 2013 um 12:49 Uhr

  • ja ich bin verwirrt! Ok, vergiss, woher die Anfragen kommen; Die Android-App wird geöffnet und fordert einen Benutzernamen und ein Passwort vom Benutzer an und sendet sie mit einer einfachen HTTP-Authentifizierung über SSL. Nachfolgende Anfragen senden ebenfalls den Benutzernamen und das Passwort. Das ist eine Methode. Wo kommen also oAuth/Tokens ins Spiel, wenn ich mich nicht für die obige grundlegende Authentifizierungsmethode entscheiden wollte?

    – paul

    22. Juli 2013 um 13:32 Uhr

1158440cookie-checkWas ist ein API-Token [closed]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy