Ich erstelle eine RESTful API für ein Projekt, an dem ich arbeite, und ich möchte, dass die Hauptanwendung die API verbraucht, weil:
- Es wird nur einen Code-Satz zu pflegen geben
- Sollten wir uns entscheiden, die API für Entwickler von Drittanbietern freizugeben, wird dies bereits erledigt sein
- Es eröffnet die Möglichkeit, mobile Anwendungen zu entwickeln, die sie verbrauchen
- Ich möchte wirklich lernen, wie es geht
Die API wird auf einem Subdomain gehostet https://api.example.com
und die Haupt-Webanwendung wird auf der Root-Domain gehostet https://example.com
.
Konzeptionell verstehe ich, wie alles funktioniert, aber meine Hauptfrage ist, wie sich der Authentifizierungsfluss ändern wird, wenn überhaupt. Normalerweise würden Drittanbieter-Apps:
- Einen Anforderungstoken von
https://api.example.com/request_token
erhalten - Den Benutzer zur Authentifizierung auf
https://api.authenticate.com/authorize
weiterleiten - Zurück zur Drittanbieteranwendung weitergeleitet werden
- Einen Zugriffstoken von
https://api.example.com/access_token
erhalten
Da ich beide Domains kontrolliere, kann ich etwas Ähnliches tun wie:
- Einen Anforderungstoken erhalten, wenn der Benutzer auf der Login-Seite unter
https://www.example.com
landet - Der Benutzer authentifiziert sich über ein Formular auf
https://www.example.com
, das den gleichen Code wiehttps://api.example.com/authorize
aufruft - Wenn die Anmeldedaten gültig sind, wird der Anforderungstoken gegen den Zugriffstoken ausgetauscht
- Der Zugriffstoken wird in der Sitzung gespeichert und läuft ab, wenn der Benutzer sich abmeldet, wie es normalerweise der Fall wäre
Schritt 3 fühlt sich falsch an, da es doppelten Code geben wird, aber würde mich das nicht Angriffen durch XSS öffnen, wenn das Anmeldeformular auf https://www.example.com
die Daten an https://api.example.com
sendet, da sie technisch verschiedene Domains sind?
Überkompliziere ich das Ganze?