Es gibt zahlreiche Möglichkeiten für authentische Benutzer, sowohl für Webanwendungen als auch für APIs. Es gibt einige Standards, oder Sie können Ihre eigene benutzerdefinierte Autorisierung / und / oder Authentifizierung schreiben. Ich möchte auf den Unterschied zwischen Autorisierung und Authentifizierung hinweisen. Zunächst muss die Anwendung den Benutzer (oder API-Client) authentifizieren, von dem die Anforderung stammt. Sobald der Benutzer authentifiziert wurde, muss die Anwendung anhand der Identität des Benutzers bestimmen, welcher authentifizierte Benutzer die Berechtigung zum Ausführen bestimmter Anwendungen hat (Autorisierung). Bei den meisten herkömmlichen Webanwendungen gibt es keine feine Granularität im Sicherheitsmodell. Sobald der Benutzer authentifiziert ist, ist er in den meisten Fällen auch berechtigt, bestimmte Aktionen auszuführen. Diese beiden Konzepte (Authentifizierung und Autorisierung) sollten jedoch zwei verschiedene logische Operationen sein.
Darüber hinaus werden in klassischen Webanwendungen nach der Authentifizierung und Autorisierung des Benutzers (hauptsächlich durch Nachschlagen des Benutzernamen / Passwort-Paares in der Datenbank) Autorisierungs- und Identitätsinformationen in den Sitzungsspeicher geschrieben. Der Sitzungsspeicher muss nicht serverseitig sein, wie die meisten der obigen Antworten vermuten lassen. Er kann auch in Cookies auf der Clientseite gespeichert werden, die in den meisten Fällen verschlüsselt sind. Das PHP CodeIgniter-Framework führt dies beispielsweise standardmäßig aus. Es gibt eine Reihe von Mechanismen zum Schutz von Sitzungen auf der Clientseite, und ich sehe diese Art des Speicherns von Sitzungsdaten nicht weniger sicher als das Speichern der Sitzungs-ID, die dann im Sitzungsspeicher auf der Serverseite nachgeschlagen wird. Außerdem ist das Speichern clientseitig in einer verteilten Umgebung sehr praktisch.
Darüber hinaus muss die Authentifizierung mit einem einfachen Benutzer-Passwort-Paar nicht in jedem Fall über benutzerdefinierten Code erfolgen, der nach übereinstimmenden Benutzerdatensätzen in der Datenbank sucht. Es gibt zum Beispiel ein grundlegendes Authentifizierungsprotokoll oder eine Digest-Authentifizierung . Auf proprietärer Software wie der Windows-Plattform gibt es auch Möglichkeiten zur Authentifizierung von Benutzern über beispielsweise ActiveDirectory
Die Angabe eines Benutzernamen / Passwort-Paares ist nicht nur eine Möglichkeit zur Authentifizierung. Wenn Sie das HTTPS-Protokoll verwenden, können Sie auch die Authentifizierung mithilfe digitaler Zertifikate in Betracht ziehen .
In bestimmten Anwendungsfällen gibt es beim Entwerfen eines Webdienstes, der SOAP als Protokoll verwendet, auch eine WS-Security- Erweiterung für das SOAP-Protokoll.
Nach alledem würde ich sagen, dass Antworten auf die folgende Frage das Entscheidungsverfahren für die Auswahl des Autorisierungs- / Authentifizierungsmechanismus für WebApi eingeben:
1) Was ist die Zielgruppe, ist sie öffentlich verfügbar oder nur für registrierte (zahlende) Mitglieder?
2) Wird es ausgeführt oder * NIX oder MS-Plattform
? 3) Welche Anzahl von Benutzern wird erwartet?
4) Wie viel sensible Daten-API verarbeitet (stärkere oder schwächere Authentifizierungsmechanismen)
5) Gibt es einen SSO-Dienst, den Sie verwenden könnten?
.. und viele mehr.
Hoffe, dass dies die Dinge ein wenig klärt, da es viele Variablen in der Gleichung gibt.