Что такое ключ API? [закрыто]


109

В наши дни я вижу это слово почти в каждом межсервисном приложении.

Что такое ключ API и для чего он нужен?

Кроме того, в чем разница между публичными и приватными ключами API.

Ответы:


111

Для чего «точно» используется ключ API, во многом зависит от того, кто его выдает и для каких служб он используется. Однако по большому счету ключ API - это имя, присвоенное некоторой форме секретного токена, который отправляется вместе с запросами веб-службы (или аналогичными), чтобы определить источник запроса. Ключ может быть включен в некоторый дайджест содержимого запроса для дальнейшей проверки источника и предотвращения подделки значений.

Обычно, если вы можете точно определить источник запроса, он действует как форма аутентификации, которая может привести к контролю доступа. Например, вы можете ограничить доступ к определенным действиям API в зависимости от того, кто выполняет запрос. Для компаний, которые зарабатывают деньги на продаже таких услуг, это также способ отслеживать, кто использует эту вещь для выставления счетов. Более того, блокируя ключ, вы можете частично предотвратить злоупотребления в случае слишком большого количества запросов.

В общем, если у вас есть как открытый, так и закрытый ключ API, это предполагает, что ключи сами по себе являются традиционной парой открытого и закрытого ключей, используемой в той или иной форме асимметричной криптографии или связанной с ней цифровой подписи. Это более безопасные методы для точной идентификации источника запроса и, кроме того, для защиты содержимого запроса от отслеживания (в дополнение к фальсификации).


12
Хорошо сказано! Однако, исходя из моего несколько ограниченного опыта, различие между публичным и частным не имеет ничего общего с криптографией с открытым ключом. «Открытые» ключи, которые я видел, - это обычно «облегченный доступ» - другими словами, ключ, который вы можете распространять, чтобы предоставить третьим лицам доступ к неконфиденциальным данным, не отдавая ключи от королевства.
timdev

2
@Rob +1 за подробный ответ @tim +1 за вдумчивый!
OrangeRind

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

24

В общем:

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

Если существует различие между публичным и частным, то публичный ключ - это тот, который вы можете передать другим, чтобы позволить им получить некоторую часть информации о вас из API. Закрытый ключ предназначен только для вашего использования и обеспечивает доступ ко всем вашим данным.


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

Их можно создавать как угодно, если они уникальны. Да, хэш некоторых данных кажется разумным способом их сгенерировать.
Мэтью Шарли,

Да, они похожи на хеши. В конце концов, вы же не хотите, чтобы их было легко угадать.
timdev

1
Более или менее - большинство стандартных ключей API болота генерируются путем хеширования некоторого псевдослучайного значения и выполнения некоторого стандартного текстового кодирования для результата, например base16, base64 и т. Д.
Роб

18

Похоже, что многие люди используют ключи API как средство безопасности. Суть в том, что никогда не считайте ключи API секретными . На https или нет, любой, кто может прочитать запрос, может увидеть ключ API и может сделать любой вызов, который захочет. Ключ API должен быть просто идентификатором «пользователя», поскольку это не полное решение безопасности даже при использовании с ssl.

Лучшее описание находится в ссылке Евгения Осовецкого: Почему при работе с большинством API-интерфейсов требуются два типа аутентификации, а именно ключ и секрет? Или проверьте http://nordicapis.com/why-api-keys-are-not-enough/


2
Как видите, это старый вопрос, и, вероятно, он может считаться «слишком широким» (или, возможно, «не по теме») в соответствии с современными стандартами Stack Overflow. Такие вопросы, как правило, вызывают самоуверенные ответы, которые обычно отклоняются и / или удаляются. Как правило, лучше всего избегать таких вопросов . Дополнительную информацию можно найти в справочном центре .
Dev-

10

Ключ API - это уникальное значение, которое присваивается пользователю этой службы, когда он принимается в качестве пользователя службы.

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

Посмотрев на предоставленный ключ в запросе, служба проверяет, является ли это действительным ключом, чтобы решить, предоставлять ли доступ пользователю или нет.


так что насчет публичного и частного?
OrangeRind

1
Открытые и закрытые ключи происходят из области шифрования и как-то связаны с асимметричным шифрованием. Я никогда не слышал, чтобы эти термины использовались в смысле ключей API.

2

Ключи API - это всего лишь один из способов аутентификации пользователей веб-служб.


1

Подумайте об этом так: «Открытый ключ API» похож на имя пользователя, которое ваша база данных использует для входа на сервер проверки. В этом случае «закрытый ключ API» будет аналогичен паролю. Благодаря сайту / базе данных, использующему этот метод, безопасность поддерживается на стороннем сервере / сервере проверки для аутентичного запроса на публикацию или редактирование вашего сайта / базы данных.

Строка API - это просто URL-адрес входа для вашего сайта / базы данных для связи с сервером проверки.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.