Ich entwerfe eine öffentliche API für die Daten meines Unternehmens. Wir möchten, dass sich Anwendungsentwickler für einen API-Schlüssel anmelden, damit wir die Verwendung und Überbeanspruchung überwachen können.
Da die API REST ist, ist mein erster Gedanke, diesen Schlüssel in einen benutzerdefinierten Header zu setzen. So habe ich Google, Amazon und Yahoo gesehen. Mein Chef hingegen ist der Meinung, dass die API einfacher zu verwenden ist, wenn der Schlüssel lediglich Teil der URL usw. wird. " Http: //api.domain.tld/longapikey1234/resource ". Ich denke, es gibt etwas zu sagen, aber es verstößt gegen das Prinzip der URL als einfache Adresse dessen, was Sie wollen und nicht wie oder warum Sie es wollen.
Finden Sie es logisch, den Schlüssel in die URL einzufügen? Oder möchten Sie HTTP-Header lieber nicht manuell festlegen, wenn Sie ein einfaches Javascript-Frontend für einige Daten schreiben?
Wenn Sie ein Argument suchen, das einen Chef ansprechen könnte: Überlegen Sie, was eine URL ist. URLs sind öffentlich. Die Leute kopieren sie und fügen sie ein. Sie teilen sie, sie setzen sie auf Werbung. Nichts hindert jemanden (wissentlich oder nicht) daran, diese URL an andere Personen zu senden. Wenn sich Ihr API-Schlüssel in dieser URL befindet, hat ihn jeder.
quelle
Es ist besser, den API-Schlüssel im Header und nicht in der URL zu verwenden.
URLs werden im Browserverlauf gespeichert, wenn sie vom Browser aus versucht werden. Es ist ein sehr seltenes Szenario. Das Problem tritt jedoch auf, wenn der Back-End-Server alle URLs protokolliert. Möglicherweise wird der API-Schlüssel verfügbar gemacht.
Auf zwei Arten können Sie den API-Schlüssel im Header verwenden
Grundautorisierung:
Beispiel aus Streifen:
curl verwendet das Flag -u, um grundlegende Authentifizierungsdaten zu übergeben (das Hinzufügen eines Doppelpunkts nach Ihrem API-Schlüssel verhindert, dass Sie nach einem Kennwort gefragt werden).
Benutzerdefinierter Header
quelle
Ich würde den Schlüssel nicht in die URL einfügen, da er gegen diesen losen 'Standard' verstößt, der REST ist. Wenn Sie dies jedoch tun würden, würde ich es in den 'Benutzer'-Teil der URL einfügen.
Beispiel: http: //[email protected]/myresource/myid
Auf diese Weise kann es auch als Header mit basic-auth übergeben werden.
quelle
Das Übergeben von API-Schlüsseln in Parametern macht es für Clients schwierig, ihre API-Schlüssel geheim zu halten. Sie neigen dazu, regelmäßig Schlüssel zu verlieren. Ein besserer Ansatz besteht darin, ihn im Header der Anforderungs-URL zu übergeben. Sie können den Benutzerschlüssel-Header in Ihrem Code festlegen. Zum Testen Ihrer Anforderungs-URL können Sie die Postman-App in Google Chrome verwenden, indem Sie den Benutzerschlüssel-Header auf Ihren API-Schlüssel setzen.
quelle