Es gibt zahlreiche Online-Ressourcen, die JavaScript-APIs für den Zugriff auf ihre Dienste bereitstellen. Um es klarer zu sagen, werde ich meine Frage auf das Beispiel MapBox stützen, aber das gilt auch für viele andere Dienste in verschiedenen Bereichen.So sichern Sie das JavaScript API Access Token?
Wenn jemand einen solchen Dienst in einer Web-Anwendung verwenden (wie die Kartenbilder von MapBox zum Beispiel), müssen sie in der Regel Registrieren/Anmelden und erhalten einen Zugriffstoken auf den Dienst zuzugreifen.
Jetzt, wenn ich die API von der Server-Seite verwenden würde - gibt es kein Problem: Ich weiß, dass mein Token sicher irgendwo auf dem Server gespeichert ist und nur bei der Kommunikation zwischen meinem Server und dem Dienstanbieter "ausgesetzt". Im Falle einer JavaScript-API (zum Beispiel wenn ich Leaflet verwende, um eine Karte von MapBox zu rendern), soll ich mein Zugriffs-Token in einem JavaScript haben, das dem Webbrowser des Benutzers ausgesetzt ist - und so macht es es extrem einfach, jemandes Zugangs-Token zu finden. In meinem Beispiel zeigt die Verwendung von Leaflet und das Öffnen von "Dev Tools" in Firefox einfach, welches Token sie in einer Minute des aufmerksamen Lesens ihres JavaScript-Codes verwenden.
Dieses Token sollte jedoch als sehr sicher betrachtet werden. Die Verwendung des Dienstes wird anhand der Authentifizierung dieses Tokens verfolgt. Wenn Sie den Dienst aufgrund seiner Nutzung bezahlen, wird dies sehr kritisch, aber selbst wenn Sie das nicht tun (wie wenn Sie einen kostenlosen/Starter/nicht bezahlten Plan verwenden) - die Nutzung des Dienstes ist begrenzt und ich möchte sicher sein nur ich benutze es.
Natürlich gibt es Strategien wie IP/Domain-Filterung von Service Provider, aber es scheint nicht, dass alle Service Provider dies unterstützen - zum Beispiel, MapBox scheint nicht (oder ich habe nicht gefunden es). Letztendlich kann ich den Dienst auch über meinen Webserver ausführen, aber das ist sehr schwer.
Gibt es eine Möglichkeit, das Zugriffstoken zu sichern, das von einer JavaScript-API für den Zugriff auf einen externen Dienst verwendet wird, vorausgesetzt, dass JavaScript im Browser eines Benutzers ausgeführt wird?
Nein, wenn der Client das Token an seinen Server senden muss, kann der Client auf dieses Token zugreifen - es gibt keinen Weg um es herum. Es gibt jedoch einige Authentifizierungsarchitekturen, die einem Benutzer nicht das vollständige Geheimnis zur Verfügung stellen, um herauszufinden, was der Dienst bietet. – Bergi