Що таке ключ API? [зачинено]


109

Я бачу це слово майже в кожній програмі крос-сервісу в наші дні.

Що саме являє собою ключ API та які його використання?

Також, в чому різниця між публічними та приватними ключами API.

Відповіді:


111

Для чого саме використовується ключ API, дуже залежить від того, хто його видає та для яких служб він використовується. За великим рахунком, ключ API - це ім'я, яке надається певній формі секретного маркера, який подається поряд із запитами веб-служб (або подібних) для того, щоб визначити походження запиту. Ключ може бути включений у деякий дайджест вмісту запиту для подальшої перевірки походження та запобігання підробці значень.

Як правило, якщо ви можете ідентифікувати джерело запиту позитивно, він виступає як форма аутентифікації, що може призвести до контролю доступу. Наприклад, ви можете обмежити доступ до певних дій API, залежно від того, хто виконує запит. Для компаній, які заробляють гроші на продажу таких послуг, це також спосіб відстеження, хто використовує річ для цілей виставлення рахунків. Крім того, заблокувавши ключ, ви можете частково запобігти зловживанням у разі занадто високого обсягу запитів.

Загалом, якщо у вас є і відкритий, і приватний ключ API, тоді це говорить про те, що ключі самі по собі є традиційною парою публічних / приватних ключів, яка використовується в якійсь формі асиметричної криптографії або пов'язаної з цим цифровим підписом. Це більш безпечні прийоми позитивного виявлення джерела запиту та додатково для захисту вмісту запиту від прокрадання (крім підробки).


12
Добре кажучи! Однак, за моїм дещо обмеженим досвідом, відмінність між приватним та приватним не має нічого спільного з криптовалютою з відкритим ключем. Я бачив "відкриті" ключі, як правило, "access lite" - іншими словами, ключ, який ви можете поширити, щоб надати стороннім особам доступ до нечутливих даних, не віддаючи ключі від королівства.
timdev

2
@Rob +1 для детальної відповіді @tim +1 для прихильників!
OrangeRind

@tim - погодився. Я думаю, що більш поширеним підходом, який я бачив, є наявність приватного дайджест-ключа.
Роб

24

Дуже загально кажучи:

Ключ API просто ідентифікує вас.

Якщо існує публічне / приватне розрізнення, тоді відкритий ключ - це той, який ви можете поширити іншим, щоб вони могли отримати деяку підмножину інформації про вас з api. Приватний ключ призначений виключно для використання та забезпечує доступ до всіх ваших даних.


більшість часу вони виглядають як хеші. чи моє спостереження правильне?
OrangeRind

Ви можете генерувати все, що завгодно, якщо вони унікальні. Хеш деяких даних видається розумним способом їх отримання, так.
Меттью Шарлі

Так, вони схожі на хеші. Зрештою, ви не хочете, щоб їх було легко здогадатися.
timdev

1
Більш-менш - більшість стандартних ключів API генеруються шляхом хешування якогось псевдовипадкового значення та виконання деякого стандартного кодування простим текстом на результат, наприклад base16, base64 тощо
Rob

18

Схоже, що багато людей використовують ключі API як рішення безпеки. Суть полягає в тому, що ніколи не ставитися до ключів API як до секретних . На https чи ні той, хто може прочитати запит, може побачити ключ API і може здійснити будь-який дзвінок, який захоче. Ключ API повинен бути таким же ідентифікатором "користувача", оскільки його не є повноцінним рішенням безпеки навіть при використанні з ssl.

Кращий опис міститься в посиланні Євгена Осовецького на: Під час роботи з більшістю API, чому вони вимагають два типи аутентифікації, а саме ключ та секрет? Або перевірте http://nordicapis.com/why-api-keys-are-not-enough/


2
Як бачимо, це давнє питання, яке, можливо, вважається "занадто широким" (або, можливо, "поза темою") відповідно до сучасних стандартів Stack Overflow. Такі питання, як правило, залучають впевнені відповіді, які, як правило, зворотні та / або видалені. Захист від таких питань, як правило, є найкращим способом дій. Для отримання додаткової інформації ви можете подивитися в довідковому центрі .
Dev-iL

10

Ключ API - це унікальне значення, яке присвоюється користувачеві цієї послуги, коли він приймається користувачем послуги.

Сервіс підтримує всі видані ключі та перевіряє їх при кожному запиті.

Переглядаючи наданий ключ у запиті, служба перевіряє, чи є дійсним ключем, щоб вирішити, надавати доступ користувачеві чи ні.


то як щодо державного та приватного?
OrangeRind

1
Публічні та приватні ключі походять з домену шифрування і мають щось спільне з асиметричним шифруванням. Я ніколи не чув, щоб ці терміни використовувалися в сенсі ключів API.

2

Ключі API - це лише один із способів аутентифікації користувачів веб-служб.


1

Подумайте про це так: "Public API Key" схожий на ім'я користувача, яке ваша база даних використовує як вхід на сервер підтвердження. Потім "Приватний ключ API" буде подібний до пароля. За допомогою веб-сайту / бази даних, використовуючи цей метод, захист підтримується на сторонній сервері / сервері підтвердження з метою автентичного запиту розміщення чи редагування вашого сайту / бази даних.

Рядок API - це лише URL-адреса для входу для вашого веб-сайту / бази даних, щоб зв’язатися з сервером підтвердження.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.