Co to jest klucz API? [Zamknięte]

109

W dzisiejszych czasach widzę to słowo w prawie każdej aplikacji cross-service.

Czym dokładnie jest klucz API i jakie są jego zastosowania?

Jaka jest różnica między publicznymi i prywatnymi kluczami API.

OrangeRind
źródło

Odpowiedzi:

111

Do czego „dokładnie” jest używany klucz API, zależy w dużej mierze od tego, kto go wydał i do jakich usług jest używany. Jednak ogólnie rzecz biorąc, klucz API to nazwa nadana jakiejś formie tajnego tokenu, który jest przesyłany wraz z żądaniami usług internetowych (lub podobnych) w celu zidentyfikowania źródła żądania. Klucz może być zawarty w pewnym skrócie treści żądania, aby dodatkowo zweryfikować pochodzenie i zapobiec manipulowaniu wartościami.

Zwykle, jeśli można pozytywnie zidentyfikować źródło żądania, działa to jako forma uwierzytelnienia, która może prowadzić do kontroli dostępu. Na przykład możesz ograniczyć dostęp do niektórych akcji API w zależności od tego, kto wykonuje żądanie. Dla firm, które zarabiają na sprzedaży takich usług, jest to również sposób na śledzenie, kto używa rzeczy do celów rozliczeniowych. Co więcej, blokując klucz, można częściowo zapobiec nadużyciom w przypadku zbyt dużej liczby żądań.

Ogólnie rzecz biorąc, jeśli masz zarówno publiczny, jak i prywatny klucz API, sugeruje to, że same klucze są tradycyjną parą kluczy publiczny / prywatny używaną w jakiejś formie asymetrycznej kryptografii lub powiązanego podpisu cyfrowego. Są to bezpieczniejsze techniki do pozytywnej identyfikacji źródła żądania, a dodatkowo do ochrony treści żądania przed szpiegowaniem (oprócz manipulacji).

Obrabować
źródło
12
Dobrze wyłożone! Jednak z mojego nieco ograniczonego doświadczenia wynika, że ​​rozróżnienie między publicznym a prywatnym nie ma nic wspólnego z kryptografią klucza publicznego. „Publiczne” klucze, które widziałem, to zazwyczaj „access lite” - innymi słowy, są to klucze, które można rozpowszechniać w celu zapewnienia osobom trzecim dostępu do niewrażliwych danych, bez ujawniania kluczy królestwu.
timdev
2
@Rob +1, aby uzyskać szczegółową odpowiedź @tim +1 do rozważenia!
OrangeRind
@tim - zgodził się. Myślę, że bardziej powszechnym podejściem, jakie widziałem, jest posiadanie prywatnego klucza skrótu.
Rob
24

Ogólnie mówiąc:

Klucz API po prostu Cię identyfikuje.

Jeśli istnieje rozróżnienie między publicznym a prywatnym, kluczem publicznym jest klucz, który możesz przekazać innym, aby umożliwić im uzyskanie pewnego podzbioru informacji o tobie z interfejsu API. Klucz prywatny służy wyłącznie do Twojego użytku i zapewnia dostęp do wszystkich Twoich danych.

timdev
źródło
przez większość czasu wyglądają jak haszy. czy moja obserwacja jest poprawna?
OrangeRind
Mogą być generowane w dowolny sposób, o ile są unikalne. Skrót niektórych danych wydaje się rozsądnym sposobem na ich wygenerowanie, tak.
Matthew Scharley,
Tak, wyglądają jak haszy. W końcu nie chcesz, aby były łatwe do odgadnięcia.
timdev
1
Mniej więcej - większość standardowych kluczy API jest generowanych przez zahaszowanie jakiejś pseudolosowej wartości i wykonanie standardowego kodowania zwykłego tekstu na wyniku, np. Base16, base64 itp.
Rob
18

Wygląda na to, że wiele osób używa kluczy API jako rozwiązania zabezpieczającego. Najważniejsze jest to: nigdy nie traktuj kluczy API jako tajnych tak nie jest. Na https lub nie, każdy, kto może odczytać żądanie, może zobaczyć klucz API i może wykonać dowolne wywołanie. Klucz API powinien być po prostu identyfikatorem „użytkownika”, ponieważ nie jest to kompletne rozwiązanie zabezpieczające, nawet jeśli jest używane z protokołem SSL.

Lepszy opis znajduje się w Eugene Osovetsky, link do: Dlaczego podczas pracy z większością interfejsów API wymagają one dwóch rodzajów uwierzytelniania, a mianowicie klucza i sekretu? Lub sprawdź http://nordicapis.com/why-api-keys-are-not-enough/

timandtheocean
źródło
2
Jak widać, jest to stare pytanie i według współczesnych standardów przepełnienia stosu może zostać uznane za „zbyt szerokie” (lub być może „niezwiązane z tematem”). Takie pytania zwykle przyciągają uparte odpowiedzi, które zazwyczaj są odrzucane i / lub usuwane. Unikanie takich pytań jest zazwyczaj najlepszym sposobem działania. Więcej informacji znajdziesz w Centrum pomocy .
Dev-iL
10

Klucz API to unikatowa wartość przypisywana użytkownikowi tej usługi, gdy zostanie zaakceptowany jako użytkownik usługi.

Serwis utrzymuje wszystkie wydane klucze i sprawdza je na każde żądanie.

Spoglądając na dostarczony klucz na żądanie, usługa sprawdza, czy jest to ważny klucz, aby zdecydować, czy przyznać dostęp użytkownikowi, czy nie.


źródło
a co z publicznym i prywatnym?
OrangeRind
1
Klucze publiczne i prywatne pochodzą z domeny szyfrowania i mają coś wspólnego z szyfrowaniem asymetrycznym. Nigdy nie słyszałem tych terminów w znaczeniu kluczy API.
2

Klucze API to tylko jeden ze sposobów uwierzytelniania użytkowników usług internetowych.

GG.
źródło
1

Pomyśl o tym w ten sposób, że „publiczny klucz API” jest podobny do nazwy użytkownika, której Twoja baza danych używa jako logowania do serwera weryfikacyjnego. „Prywatny klucz API” byłby wtedy podobny do hasła. Przez witrynę / bazę danych korzystającą z tej metody, bezpieczeństwo jest utrzymywane na serwerze zewnętrznym / serwerze weryfikacyjnym w celu autentycznego żądania opublikowania lub edycji Twojej witryny / bazy danych.

Ciąg API to po prostu adres URL logowania do Twojej witryny / bazy danych, aby skontaktować się z serwerem weryfikacyjnym.

Eugene Grant-Sinclair
źródło