Ich versuche, meinen Kopf um OAuth2 und Perl zu wickeln (d. h. Net :: OAuth2) - speziell eine RESTful-API für eine Datenbank einzurichten und eine Anwendung, die sie benutzt.
Perl Oauth2-Paket führte mich zu Net :: OAuth2.
Soweit ich es beurteilen kann, gibt es ein paar Dinge, die ich tun muss (bitte korrigiert mich, wenn ich irgendwo im Unkraut unterwegs bin):
In meinem Kopf, hier ist, wie es funktioniert:
Ist das eine vernünftige Einschätzung des Prozesses?
Wenn ja, wäre es sinnvoller, die "Authentifizierung / Autorisierung" als Teil des REST-Servers oder als vollständig separaten Server zu verwenden? (auf der gleichen Hardware).
Net :: OAuth2 :: Profile :: WebServer erklärt es nett was auf der Seite der Client-Anwendung passieren muss.
Die Tests in Ссылка (es sei denn, ich bin wirklich etwas fehlt) arbeiten mit Net :: OAuth2 Webserver-Profil, das (wieder) die "Client-Anwendung" sein würde.
Es gibt weitere Beispiele für das Schreiben des Clients - das Herstellen einer Verbindung mit einem vorhandenen OAuth2-Server, z. B. die API von Google API -, aber ich finde keine Beispiele für das Schreiben des Servers .... (Ich bin ziemlich bereit zu RTFM, wenn ich finde die FM ... Zeiger geschätzt!)
Die allgemeine Idee besteht darin, einen zentralen Authentifizierungsserver mit der Verarbeitung von Anmeldeinformationen + Tokengenerierung + Richtlinien umgehen zu lassen (policy = & gt; ist diese App, die von diesem Benutzer autorisiert wurde) .
Sprechen wir zuerst vom OAuth-Server .
i) Der Server ist für eine Anmeldeseite verantwortlich, auf der der Benutzer seine Anmeldeinformationen eingeben kann.
ii) Validiert die Anmeldeinformationen. Wenn dieser Server korrekt ist, überprüft er, welche Client-App den Aufruf ausgeführt hat und überprüft, ob " diese App von diesem Benutzer autorisiert wurde". - Hier kommt das Konzept der Bereiche.
iii) Erzeugt einen Zugriffstoken / Autorisierungscode für die App.
iv) Wenn eine API von einem Client mit einem Zugriffstoken betroffen ist, sollte die API das Token intern an diesen Server übergeben. Es ist die Aufgabe dieses Servers, den Tokeninhalt zu verifizieren.
Nun die APIs
i) Die API sollte ein Token von einer Client-App akzeptieren, es an den Server übergeben - eine eindeutige Kunden-ID vom Server holen und Daten an den Client für diesen Kunden zurückgeben.
Für Apps von Drittanbietern ,
i) Sie müssen einen Registrierungsprozess haben. Der Kunde muss Client-ID und Secret haben. Mit Google können Sie sich in der Konsole registrieren.
ii) Es sollte einen Bereich geben, der jeder einzelnen API zugeordnet ist. Wenn Sie beispielsweise eine Google OAuth-App erstellen, müssen Sie Ihre App für einen Bereich registrieren, z. B. G +, Picasa, Google Drive usw.
iii) Zugriffstoken sind für den Gültigkeitsbereich eindeutig und werden den Berechtigungen zugeordnet, die der Nutzer für Ihre App erhält. Wenn die Benutzerclient-App nur G + Geltungsbereich auswählt und vom Benutzer Zugriff gewährt wird, kann die App das Token nur für den G + Endpunkt verwenden.
Eine ausführlichere Antwort zur Implementierung eines OAuth-Servers finden Sie hier: Wie würde ein effizienter OAuth2.0 Server / Provider funktionieren?