2011-02-10 15 views
5

Większość interfejsów API prosi programistów o uzyskanie klucza API. Klucz API jest następnie używany do ograniczania szybkości. Co ma powstrzymać programistę przed uzyskiwaniem wielu kluczy API, aby zapobiec przekroczeniu limitu stawek?Co ma powstrzymać programistę przed uzyskiwaniem wielu kluczy API

Problem, który napotykam, decyduje o tym, jak wydać klucz API. Jedyne, co udało mi się znaleźć, to wydać więcej "klucza programisty".

  • Nie znaleźli sposób, aby naprawdę ocenić ograniczyć użycie danej aplikacji (ktoś może uzyskać wiele kluczy i sekwencja karmić je do swojej aplikacji, aby uzyskać wyższe ceny dla tej jednej aplikacji)
  • i nie mam znaleźli sposób, aby utrzymać klawisz per-aplikacji (ktoś mógłby dostać klucz i używać go w wielu domenach)

Odpowiedz

5

klucz API nie jest odpowiednim narzędziem ograniczania przepustowości, zwłaszcza jeśli API jest z powrotem -Wyżej wywołanie. Działa, jeśli kod jest zintegrowany z przeglądarką użytkownika końcowego, ponieważ służy to jako "neutralna podstawa", która może zapewnić, że tożsamość aplikacji nie jest fałszowana, ale nie, jeśli jest wywołana z usługi lub aplikacji napisanej przez twoich programistów klienta .

Kontrola wykorzystania zasobów jest problemem gospodarczym, dlatego wymaga ekonomicznego rozwiązania. Wymaganie unikalnego tokenu hashcash za połączenie jest dobrym sposobem na wymuszenie tego. (Hashcash jest schematem dowodu pracy - wymaga od osoby dzwoniącej udowodnienia, że ​​poświęciła sporo czasu procesora na bezcelowe zadanie, jako sposób potwierdzenia, że ​​żądanie ma dla nich wartość.)

To jest także skalowalna w zależności od obciążenia - jeśli Twoja usługa jest przytłoczona, możesz dynamicznie zwiększać "cenę" w wiodących bitach zerowych wymaganych w tokenie; każde zwiększenie o jeden bit spowoduje zmniejszenie stawki żądania o połowę. (Tylko upewnij się, że interfejs API może komunikować "cenę" skrótu, jeśli jest dynamiczny).

+0

Zastanawiam się, w jaki sposób można stworzyć interfejs API, który nie jest "zwrotny na żądanie"? – silow

+0

+1 ciekawe połączenie hashcash – orangepips

+0

@silow Mam na myśli coś w rodzaju Google Maps, gdzie publiczny interfejs API jest częścią wbudowanej interaktywnej aplikacji działającej w przeglądarce; interfejs API HTTP między komponentem JavaScript Google Maps a serwerami zaplecza Google jest niepubliczny. –

Powiązane problemy