2009-01-26 8 views
10

Bei mehreren Web-Service-APIs haben Sie sich für einen API-Schlüssel angemeldet. Zum Beispiel, UPS Web-Dienste benötigen einen Schlüssel, der in Anrufe an ihren Dienst enthalten ist - Zusätzlich zu den Benutzernamen und das Passwort.Warum benötigen einige API-Anbieter einen API-Schlüssel?

Wofür wird dieser Schlüssel vom Anbieter verwendet? Vielleicht ist UPS die einzige, die sowohl den API-Schlüssel als auch den Benutzernamen/das Passwort benötigt?

Eine Idee ist, dass sie es verwenden, um API-Nutzung zu begrenzen oder zu messen, aber es scheint mir, dass eine Einstellung im Benutzerprofil leicht das gleiche tun könnte - besonders da Sie in der Regel ein Konto mit Benutzernamen erhalten müssen und Passwort, um die API an erster Stelle zu bekommen.

+0

Warum hast du das zu einem Wiki gemacht? – GEOCHET

+0

Weil ich wikiness mag! :) –

Antwort

5

Es gibt zwei vorherrschende Anwendungsfälle. Die erste besteht darin, die API-Nutzung zu messen, zu verfolgen und einzuschränken. Wenn jemand einen Dienst baut, der es Dritten ermöglicht, darauf zuzugreifen, möchte der Dienstanbieter möglicherweise kontrollieren (oder zumindest wissen), wer Zugriff hat, um beispielsweise Dinge wie Denial-of-Service-Angriffe zu verhindern. Auf der Kennzahl- und Spur-Seite können interessante Informationen erhalten werden, wie zum Beispiel wissen, welche Anwendungen für den Zugriff auf den Dienst populär sind oder welche Merkmale die Benutzer am meisten verwenden.

Der andere Anwendungsfall bezieht sich auf Sicherheit und Authentifizierung.Es ist unklug für einen Dienstanbieter, dass Anwendungen und Dienste von Drittanbietern erfordern, dass Benutzer ihren Benutzernamen und ihr Kennwort für den primären Dienst aufgeben. Dies ist eine riesige Exposition. Aus diesem Grund standardisieren viele Dienste Protokolle wie OAuth, die einen delegierten Zugriff durch Autorisierung auf Benutzerdaten bietet. Obwohl nicht idiotensicher, ist es definitiv vorzuziehen, Benutzeranmeldeinformationen an unbekannte und nicht vertrauenswürdige Parteien zu verteilen.

+0

Wenn es um die Einschränkung der API-Nutzung geht, ist es nicht möglich, den API-Schlüssel von, sagen wir, einer dritten Partei "Anwendung A" zu verwenden und durch eine andere "Anwendung zu verspotten B "und die Anfrage bekommen? Wie wird hier der Sicherheitszweck bedient? –

1

Normalerweise verwendet, um Statistiken darüber zu erhalten, wie viel Anwendung Abfragen an API durchführt. Ich denke, die Frage nach Benutzername/Passwort mit API-Schlüssel ist in einigen Fällen zweideutig, aber es ist ein Weg, wie es implementiert wird - damit können wir nichts machen.

Sie fragen nach API-Schlüssel, weil Sie mehr als eine API unter demselben Konto haben können - falls Sie mehr als eine Website haben, die dieselbe API verwenden.

0

Sie könnten damit angeben, welche Version der API Sie verwenden möchten. Vielleicht gibt es in Version 1.0 eine Methode, die einen POST auf www.UPS.com/search ausführt und es gibt einen anderen in Version 2.0 an der gleichen Adresse, aber nimmt einen anderen Parametersatz oder gibt sogar Daten in einem anderen Format zurück/Stil. Ihr Programm wurde auf V1.0 erstellt und erwartet einen bestimmten API-Vertrag. Sie möchten V2.0 erstellen können, ohne die Produkte ihrer Kunden zu beeinträchtigen.

Das ist nur eine Vermutung, aber es klingt gut für mich.

0

Ich denke, Gracenote macht eine ähnliche Sache für CDdb. Ich vergesse die Details, aber ich erinnere mich an etwas über ein Token.

(Sie haben/hatten wirklich drakonische Regeln über ihren Dienst zu verwenden.)

Simon mich daran erinnert, was die Gracenote- Sache war. Gracenote und Fedex und andere Webservices haben viele Entwickler, die Apps für die Software schreiben. So erhalten die Entwickler ein Token, das sie in ihre Apps einbinden können, aber die Endbenutzer haben ihren eigenen Benutzernamen und ihr eigenes Passwort. Dadurch können die Dienste Programme usw. im Auge behalten. Das ist wahrscheinlich der Hauptgrund. (Wie ein Browser oder ein Webbot, der den Webserver informiert, wer/was es ist)

4

Die meiste Zeit ist es zu überwachen, wie Entwickler die Web-API verwenden. Wenn sie mit Ihrer Nutzung der API nicht einverstanden sind, bietet sie ihnen die Möglichkeit, sie zu schließen, ohne die anderen Benutzer zu verletzen. Und die Statistiken pro Benutzer/App sind immer wertvoll.

Ich habe die flickr api verwendet - in dieser Situation gehört der Schlüssel dir, aber die Login-Daten könnten denen von Leuten entsprechen, die deine App benutzen, also ist der API-Schlüssel die einzige Möglichkeit, zwischen den Apps zu unterscheiden.

+0

yep - jetzt erinnere ich mich - das gleiche gilt für gracenote – Tim

0

Ursprünglich mussten Sie von Blogger einen API-Schlüssel (a la Google Maps) beantragen und diesen verwenden, um den Zugriff auf die API einzuschränken. Als Blogger zu Metaweblog wurde, wurde die Anforderung für die API weniger wichtig und Blogger verlangt nicht länger, dass Sie einen Schlüssel beantragen. Wie von anderen bemerkt, kann es immer noch für Tracking-Zwecke verwendet werden.

0

In unserer Situation, wollen, dass unsere Kunden für:

  • Tracking/Analytik - herauszufinden, wer was und Gebäude, welche Produkte tut. Da es sich bei einer Reihe von Benutzern um Desktop-Apps handelt, reicht es nicht aus, nur auf Referrer zu schauen.
  • Berechtigungen - auf welche Ressourcen sollte ein Benutzer zugreifen können? Wie kann ein Benutzer Apps erstellen, die Zugriff auf bestimmte Ressourcen haben?
  • Lizenzierung/legal - Erzwingen, dass Benutzer ToU/Lizenzinformationen gelesen und akzeptiert haben.
  • Sicherheit - Weitergabe von Benutzernamen/Passwörter ist eine wirklich schlechte Idee.
Verwandte Themen