Was ist ein API-Schlüssel? [geschlossen]


109

Ich sehe dieses Wort heutzutage in fast jeder Cross-Service-Anwendung.

Was genau ist ein API-Schlüssel und wozu dient er?

Was ist der Unterschied zwischen öffentlichen und privaten API-Schlüsseln?

Antworten:


111

Wofür "genau" ein API-Schlüssel verwendet wird, hängt stark davon ab, wer ihn ausgibt und für welche Dienste er verwendet wird. Im Großen und Ganzen ist ein API-Schlüssel jedoch der Name einer Form eines geheimen Tokens, das zusammen mit Webdienstanforderungen (oder ähnlichen Anforderungen) gesendet wird, um den Ursprung der Anforderung zu identifizieren. Der Schlüssel kann in einem Digest des Anforderungsinhalts enthalten sein, um den Ursprung weiter zu überprüfen und Manipulationen an den Werten zu verhindern.

Wenn Sie die Quelle einer Anforderung eindeutig identifizieren können, fungiert sie normalerweise als Authentifizierungsform, die zur Zugriffskontrolle führen kann. Sie können beispielsweise den Zugriff auf bestimmte API-Aktionen einschränken, je nachdem, wer die Anforderung ausführt. Für Unternehmen, die mit dem Verkauf solcher Dienstleistungen Geld verdienen, ist dies auch eine Möglichkeit, zu verfolgen, wer das Objekt für Abrechnungszwecke verwendet. Darüber hinaus können Sie durch Blockieren eines Schlüssels Missbrauch bei zu hohen Anforderungsvolumina teilweise verhindern.

Wenn Sie sowohl einen öffentlichen als auch einen privaten API-Schlüssel haben, bedeutet dies im Allgemeinen, dass die Schlüssel selbst ein traditionelles öffentliches / privates Schlüsselpaar sind, das in irgendeiner Form von asymmetrischer Kryptografie oder verwandter digitaler Signatur verwendet wird. Dies sind sicherere Techniken zum eindeutigen Identifizieren der Quelle einer Anforderung und zum Schutz des Inhalts der Anforderung vor Schnüffeln (zusätzlich zu Manipulationen).


12
Gut ausgedrückt! Nach meiner etwas begrenzten Erfahrung hat die Unterscheidung zwischen öffentlich und privat jedoch nichts mit Krypto mit öffentlichem Schlüssel zu tun. Die "öffentlichen" Schlüssel, die ich gesehen habe, sind normalerweise "access lite" - mit anderen Worten, ein Schlüssel, den Sie verteilen können, um Dritten Zugriff auf nicht vertrauliche Daten zu gewähren, ohne die Schlüssel an das Königreich weiterzugeben.
Timdev

2
@Rob +1 für die detaillierte Antwort @tim +1 für den Gedanken!
OrangeRind

@ Tim - vereinbart. Ich denke, der üblichere Ansatz, den ich gesehen habe, ist ein privater Digest-Schlüssel.
Rob

24

Ganz allgemein gesagt:

Ein API-Schlüssel identifiziert Sie einfach.

Wenn es eine öffentliche / private Unterscheidung gibt, können Sie den öffentlichen Schlüssel an andere verteilen, damit diese von der API eine Teilmenge der Informationen über Sie abrufen können. Der private Schlüssel ist nur für Ihre Verwendung bestimmt und bietet Zugriff auf alle Ihre Daten.


Meistens sehen sie aus wie Hashes. Ist meine Beobachtung richtig?
OrangeRind

Die können generiert werden, wie Sie möchten, solange sie eindeutig sind. Ein Hash einiger Daten scheint ein vernünftiger Weg zu sein, um einen zu generieren, ja.
Matthew Scharley

Ja, sie sehen aus wie Hashes. Schließlich möchten Sie nicht, dass sie leicht zu erraten sind.
Timdev

1
Mehr oder weniger - die meisten Standard-API-Schlüssel werden durch Hashing eines Pseudozufallswerts und Ausführen einer Standard-Klartextcodierung für das Ergebnis generiert, z. B. base16, base64 usw.
Rob

18

Es sieht so aus, als würden viele Leute API-Schlüssel als Sicherheitslösung verwenden. Das Fazit lautet: Behandeln Sie API-Schlüssel niemals als geheim , was nicht der Fall ist. Auf https oder nicht, wer die Anfrage lesen kann, kann den API-Schlüssel sehen und jeden gewünschten Anruf tätigen. Ein API-Schlüssel sollte genauso eine 'Benutzer'-ID sein wie eine nicht vollständige Sicherheitslösung, selbst wenn er mit ssl verwendet wird.

Die bessere Beschreibung finden Sie in Eugene Osovetskys Link zu: Wenn Sie mit den meisten APIs arbeiten, warum benötigen sie zwei Arten der Authentifizierung, nämlich einen Schlüssel und ein Geheimnis? Oder überprüfen Sie http://nordicapis.com/why-api-keys-are-not-enough/


2
Wie Sie sehen können, ist dies eine alte Frage, die nach modernen Stack Overflow-Standards wahrscheinlich als "zu weit gefasst" (oder möglicherweise als "nicht thematisch") angesehen werden kann. Solche Fragen ziehen tendenziell meinungsgebundene Antworten an, die normalerweise herabgestuft und / oder gelöscht werden. Sich von solchen Fragen fernzuhalten, ist normalerweise die beste Vorgehensweise. Weitere Informationen finden Sie in der Hilfe .
Dev-iL

10

Ein API-Schlüssel ist ein eindeutiger Wert, der einem Benutzer dieses Dienstes zugewiesen wird, wenn er als Benutzer des Dienstes akzeptiert wird.

Der Dienst verwaltet alle ausgegebenen Schlüssel und überprüft sie bei jeder Anforderung.

Durch Betrachten des bereitgestellten Schlüssels bei der Anforderung prüft ein Dienst, ob es sich um einen gültigen Schlüssel handelt, um zu entscheiden, ob einem Benutzer Zugriff gewährt werden soll oder nicht.


Was ist also mit dem öffentlichen und dem privaten?
OrangeRind

1
Öffentliche und private Schlüssel stammen aus dem Bereich der Verschlüsselung und haben etwas mit asymmetrischer Verschlüsselung zu tun. Ich habe noch nie gehört, dass diese Begriffe im Sinne von API-Schlüsseln verwendet werden.

2

API-Schlüssel sind nur eine Möglichkeit, Benutzer von Webdiensten zu authentifizieren.


1

Stellen Sie sich das so vor: Der "öffentliche API-Schlüssel" ähnelt einem Benutzernamen, den Ihre Datenbank als Anmeldung bei einem Überprüfungsserver verwendet. Der "Private API Key" würde dann dem Passwort ähnlich sein. Durch die Site / Datenbank, die diese Methode verwendet, wird die Sicherheit auf dem Drittanbieter / Verifizierungsserver aufrechterhalten, um eine authentische Anforderung zum Posten oder Bearbeiten Ihrer Site / Datenbank zu erhalten.

Die API-Zeichenfolge ist nur die URL des Logins für Ihre Site / Datenbank, um den Verifizierungsserver zu kontaktieren.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.