Что такое ключ API?
API-ключ – это буквенно-цифровая строка, которую разработчики API используют для управления доступом к своим API. API – это механизм связи, который позволяет обмениваться данными между двумя программными модулями. Как только вы создадите API для своего модуля, другие разработчики приложений могут вызвать ваш API, чтобы интегрировать его функции в свой код. Например, можно разработать модуль, который принимает список товаров в качестве входных данных и выдает список магазинов, в которых эти товары можно приобрести по самой низкой цене. Затем приложение для электронной коммерции может использовать ваш API для создания списка ежедневных предложений по продуктам для своих клиентов. Как создатель API, вы используете API-ключи для ограничения и мониторинга доступа к API. API-ключ определяет авторизованное использование API, чтобы вы могли более эффективно обслуживать свои API, управлять ими и монетизировать их.
Каковы примеры использования ключей API?
Разработчики программного обеспечения используют ключи API для управления доступом к созданным ими API. Ключи API используются при разработке современных облачных приложений несколькими способами.
Мониторинг использования API
Поставщики API используют ключи API для отслеживания использования и управления потреблением API, особенно для коммерческих приложений. Они выставляют пользователям счета за вычислительные ресурсы, потребляемые API.
Как поставщик API вы можете ограничить доступ к сервисам API с помощью уникальных ключей API. Разрешая пропускать только допустимый трафик, вы можете оптимизировать использование ресурсов и пропускную способность своего API. Вы также можете проанализировать статистику использования каждого ключа, чтобы скорректировать квоты для разных планов.
Устранение неполадок интеграции API
В облачных приложениях могут возникать технические проблемы из-за используемых API. Разработчики программного обеспечения используют ключи API для обнаружения аномальных комбинаций данных и установления соответствия между трафиком API и поставщиками. Таким образом, они могут идентифицировать и изолировать конкретный API, который мешает приложению работать правильно.
Определите проекты
Программные приложения обмениваются конфиденциальными данными с внешними службами через API. Ключи API служат механизмом авторизации проектов, регулирующим использование разрешенными проектами. Для использования API проект должен предоставить правильные учетные данные API для доступа к абстрактным функциям программного обеспечения. Важно отметить, что ключи API не аутентифицируют конкретных пользователей. Вместо этого они в общих чертах определяют организацию, связанную с конкретным ключом.
Как работает ключ API?
Ключ API состоит из случайно сгенерированных буквенно-цифровых символов. Вы связываете определенный ключ API с конкретным клиентом API. Поскольку использование API – это, по сути, взаимодействие одного программного модуля с другим, ключи связаны с различными программными модулями или приложениями, которые хотят взаимодействовать с вашим API.
Когда приложение отправляет запросы API, процесс работает следующим образом:
- Сервер API проверяет подлинность автора запроса с помощью уникального ключа API.
- Если ключ API не соответствует ни одному из разрешенных, сервер отклоняет вызов API и отправляет сообщение об отказе.
- Если ключ API совпадает, сервер выполняет запрос и возвращает ожидаемый ответ.
Таким образом, ключи API позволяют серверу API идентифицировать источник каждого вызова API. Затем сервер может выполнить последующие проверки для авторизации доступа к данным и сервисам API.
Ограничение вызовов API
Поставщики API могут использовать ключ API для регулирования различной степени доступа к своим сервисам API. После проверки запроса сервер API может проверить некоторые параметры, прежде чем разрешить дальнейший доступ к своим сервисам.
Объем услуг
Сервер определяет объем услуг, которые он может предоставить запрашивающему приложению. Например, некоторые ключи API позволяют автору запроса добавлять, удалять и читать информацию, хранящуюся на носителях данных API. Другие могут ограничить вызовы API только чтением информации.
Выбор функций
Сервер определяет и назначает объем для вызова API для настройки своих сервисов API. Например, вы можете использовать ключи API, чтобы ограничить приложение электронной коммерции и разрешать ему только поиск данных о продуктах в определенных странах. Можно также связать определенные ключи API с определенными параметрическими фильтрами базы данных, например книгами и одеждой.
Количество вызовов
Поставщики API также используют ключи API для жесткого регулирования доступа к API. Некоторые провайдеры устанавливают ограничения по времени или запросам к своим API. В таких случаях клиентское приложение может использовать API только в течение установленного срока или ограниченное количество раз в день. После превышения ограничений сервер будет отклонять любые запросы от соответствующих ключей API.
В чем разница между ключом API и токеном API?
Ключ API – это строка уникальных идентификаторов, предназначенных в первую очередь для определения трафика приложений от клиентов API. Ключи API обычно связаны с определенными серверами, на которых развернуто вызывающее приложение. Когда приложение делает запрос к API, сервер идентифицирует вызывающее приложение по ключу API.
Напротив, токен API – это строка кодов, содержащих исчерпывающие данные, идентифицирующие конкретного пользователя. Токены API также содержат сведения об объеме доступа, предоставленного конкретному пользователю. Это позволяет серверу аутентифицировать запросы вызывающего пользователя и проверять степень использования API. Например, пользователь может использовать токен единого входа для доступа к группе API.
Сгенерировать ключ API проще, поскольку его роль в авторизации пользователей ограничена. И наоборот, при предоставлении токенов API существует больше ограничений и процедур, поскольку они содержат идентификационные и аутентификационные данные.
В Amazon Web Services (AWS) токены API также называются токенами аутентификации или токенами безопасности. Разработчики используют разрешения IAM, авторизатор Lambda или пул пользователей Amazon Cognito для создания токенов API и управления доступом к вашим API.
Каковы рекомендации по использованию ключей API?
При использовании ключей API следует принимать во внимание несколько рекомендаций.
Избегайте использования ключей API для аутентификации пользователей. Ключи API не предназначены для регулирования доступа пользователей. Также не включайте конфиденциальную информацию в ключи API, поскольку она может быть видна во время передачи.
Не встраивайте ключи API непосредственно в исходный код или репозиторий. Если вы забудете удалить их, они могут стать общедоступными при публикации приложения.
Удаляйте ключи API, когда они больше не используются. Рассмотрите возможность добавления срока действия ключей для более надежной защиты API.
Как AWS может помочь в управлении ключами API?
Amazon Web Services (AWS) предлагает Amazon API Gateway для управления ключами API.
Вы можете использовать API Gateway для создания, публикации, обслуживания, мониторинга и защиты API REST, HTTP и WebSocket любого масштаба. Разработчики API могут создавать API для доступа к AWS или другим веб-сервисам, а также к данным, хранящимся в облаке AWS.
После создания, тестирования и развертывания API вы можете сделать их доступными в виде продуктов для своих клиентов, применив планы использования API Gateway. Вы можете настроить планы использования и ключи API, чтобы предоставить своим клиентам доступ к выбранным API. Кроме того, вы можете начать регулировать запросы к этим API на основе определенных ограничений и квот.
Создайте аккаунт прямо сегодня и начните управлять ключами API на AWS
Как узнать свой api
В примере ниже использованы стандартные библиотеки Python для подписи URL. Скачать код можно здесь.
#!/usr/bin/python # -*- coding: utf-8 -*- """ Signs a URL using a URL signing secret """ import hashlib import hmac import base64 import urllib.parse as urlparse def sign_url(input_url=None, secret=None): """ Sign a request URL with a URL signing secret. Usage: from urlsigner import sign_url signed_url = sign_url(input_url=my_url, secret=SECRET) Args: input_url - The URL to sign secret - Your URL signing secret Returns: The signed request URL """ if not input_url or not secret: raise Exception("Both input_url and secret are required") url = urlparse.urlparse(input_url) # We only need to sign the path+query part of the string url_to_sign = url.path + "?" + url.query # Decode the private key into its binary format # We need to decode the URL-encoded private key decoded_key = base64.urlsafe_b64decode(secret) # Create a signature using the private key and the URL-encoded # string using HMAC SHA1. This signature will be binary. signature = hmac.new(decoded_key, str.encode(url_to_sign), hashlib.sha1) # Encode the binary signature into base64 for use within a URL encoded_signature = base64.urlsafe_b64encode(signature.digest()) original_url = url.scheme + "://" + url.netloc + url.path + "?" + url.query # Return signed URL return original_url + "&signature=" + encoded_signature.decode() if __name__ == "__main__": input_url = input("URL to Sign: ") secret = input("URL signing secret: ") print("Signed URL: " + sign_url(input_url, secret))
Java
В примере ниже используется класс java.util.Base64 , который добавлен в версии JDK 1.8. Для более старых версий может потребоваться использование Apache Commons или аналогичных библиотек. Скачать код можно здесь.
import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.URI; import java.net.URISyntaxException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.util.Base64; // JDK 1.8 only - older versions may need to use Apache Commons or similar. import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; import java.net.URL; import java.io.BufferedReader; import java.io.InputStreamReader; public class UrlSigner < // Note: Generally, you should store your private key someplace safe // and read them into your code private static String keyString = "YOUR_PRIVATE_KEY"; // The URL shown in these examples is a static URL which should already // be URL-encoded. In practice, you will likely have code // which assembles your URL from user or web service input // and plugs those values into its parameters. private static String urlString = "YOUR_URL_TO_SIGN"; // This variable stores the binary key, which is computed from the string (Base64) key private static byte[] key; public static void main(String[] args) throws IOException, InvalidKeyException, NoSuchAlgorithmException, URISyntaxException < BufferedReader input = new BufferedReader(new InputStreamReader(System.in)); String inputUrl, inputKey = null; // For testing purposes, allow user input for the URL. // If no input is entered, use the static URL defined above. System.out.println("Enter the URL (must be URL-encoded) to sign: "); inputUrl = input.readLine(); if (inputUrl.equals("")) < inputUrl = urlString; >// Convert the string to a URL so we can parse it URL url = new URL(inputUrl); // For testing purposes, allow user input for the private key. // If no input is entered, use the static key defined above. System.out.println("Enter the Private key to sign the URL: "); inputKey = input.readLine(); if (inputKey.equals("")) < inputKey = keyString; >UrlSigner signer = new UrlSigner(inputKey); String request = signer.signRequest(url.getPath(),url.getQuery()); System.out.println("Signed URL :" + url.getProtocol() + "://" + url.getHost() + request); > public UrlSigner(String keyString) throws IOException < // Convert the key from 'web safe' base 64 to binary keyString = keyString.replace('-', '+'); keyString = keyString.replace('_', '/'); System.out.println("Key: " + keyString); // Base64 is JDK 1.8 only - older versions may need to use Apache Commons or similar. this.key = Base64.getDecoder().decode(keyString); >public String signRequest(String path, String query) throws NoSuchAlgorithmException, InvalidKeyException, UnsupportedEncodingException, URISyntaxException < // Retrieve the proper URL components to sign String resource = path + '?' + query; // Get an HMAC-SHA1 signing key from the raw key bytes SecretKeySpec sha1Key = new SecretKeySpec(key, "HmacSHA1"); // Get an HMAC-SHA1 Mac instance and initialize it with the HMAC-SHA1 key Mac mac = Mac.getInstance("HmacSHA1"); mac.init(sha1Key); // compute the binary signature for the request byte[] sigBytes = mac.doFinal(resource.getBytes()); // base 64 encode the binary signature // Base64 is JDK 1.8 only - older versions may need to use Apache Commons or similar. String signature = Base64.getEncoder().encodeToString(sigBytes); // convert the signature to 'web safe' base 64 signature = signature.replace('+', '-'); signature = signature.replace('/', '_'); return resource + "&signature=" + signature; >>
Node.js
В примере ниже для подписи URL использованы оригинальные модули Node. Скачать код можно здесь.
‘use strict’ const crypto = require(‘crypto’); const url = require(‘url’); /** * Convert from ‘web safe’ base64 to true base64. * * @param safeEncodedString The code you want to translate * from a web safe form. * @return */ function removeWebSafe(safeEncodedString) < return safeEncodedString.replace(/-/g, '+').replace(/_/g, '/'); >/** * Convert from true base64 to ‘web safe’ base64 * * @param encodedString The code you want to translate to a * web safe form. * @return */ function makeWebSafe(encodedString) < return encodedString.replace(/\+/g, '-').replace(/\//g, '_'); >/** * Takes a base64 code and decodes it. * * @param code The encoded data. * @return */ function decodeBase64Hash(code) < // "new Buffer(. )" is deprecated. Use Buffer.from if it exists. return Buffer.from ? Buffer.from(code, 'base64') : new Buffer(code, 'base64'); >/** * Takes a key and signs the data with it. * * @param key Your unique secret key. * @param data The url to sign. * @return */ function encodeBase64Hash(key, data) < return crypto.createHmac('sha1', key).update(data).digest('base64'); >/** * Sign a URL using a secret key. * * @param path The url you want to sign. * @param secret Your unique secret key. * @return */ function sign(path, secret)
C#
В примере ниже для подписи URL использована библиотека System.Security.Cryptography по умолчанию. Обратите внимание, что для реализации безопасной версии URL необходимо преобразовать стандартную кодировку Base64. Скачать код можно здесь.
using System; using System.Collections.Generic; using System.Security.Cryptography; using System.Text; using System.Text.RegularExpressions; using System.Web; namespace SignUrl < public struct GoogleSignedUrl < public static string Sign(string url, string keyString) < ASCIIEncoding encoding = new ASCIIEncoding(); // converting key to bytes will throw an exception, need to replace '-' and '_' characters first. string usablePrivateKey = keyString.Replace("-", "+").Replace("_", "/"); byte[] privateKeyBytes = Convert.FromBase64String(usablePrivateKey); Uri uri = new Uri(url); byte[] encodedPathAndQueryBytes = encoding.GetBytes(uri.LocalPath + uri.Query); // compute the hash HMACSHA1 algorithm = new HMACSHA1(privateKeyBytes); byte[] hash = algorithm.ComputeHash(encodedPathAndQueryBytes); // convert the bytes to string and make url-safe by replacing '+' and '/' characters string signature = Convert.ToBase64String(hash).Replace("+", "-").Replace("/", "_"); // Add the signature to the existing URI. return uri.Scheme+"://"+uri.Host+uri.LocalPath + uri.Query +"&signature=" + signature; >> class Program < static void Main() < // Note: Generally, you should store your private key someplace safe // and read them into your code const string keyString = "YOUR_PRIVATE_KEY"; // The URL shown in these examples is a static URL which should already // be URL-encoded. In practice, you will likely have code // which assembles your URL from user or web service input // and plugs those values into its parameters. const string urlString = "YOUR_URL_TO_SIGN"; string inputUrl = null; string inputKey = null; Console.WriteLine("Enter the URL (must be URL-encoded) to sign: "); inputUrl = Console.ReadLine(); if (inputUrl.Length == 0) < inputUrl = urlString; >Console.WriteLine("Enter the Private key to sign the URL: "); inputKey = Console.ReadLine(); if (inputKey.Length == 0) < inputKey = keyString; >Console.WriteLine(GoogleSignedUrl.Sign(inputUrl,inputKey)); > > >
Вы можете использовать следующий URL и закрытый ключ, чтобы проверить, создается ли правильная подпись. Обратите внимание, что этот закрытый ключ предназначен исключительно для тестирования и не будет принят ни одним сервисом Google.
- URL: https://maps.googleapis.com/maps/api/geocode/json?address=New+York&client= clientID
- Закрытый ключ: vNIXE0xscrmjlyV-12Nj_BvUPaw=
- Часть URL для подписи: /maps/api/geocode/json?address=New+York&client= clientID
- Подпись: chaRF2hTJKOScPr-RQCEhZbSzIE=
- Подписанный URL полностью: https://maps.googleapis.com/maps/api/geocode/json?address=New+York&client= clientID &signature=chaRF2hTJKOScPr-RQCEhZbSzIE=
Примеры на других языках
Примеры на других языках доступны в проекте подписи URL.
Подробная информация о вашем закрытом криптографическом ключе
Ваш закрытый криптографический ключ для подписи URL предоставляется вместе с идентификатором клиента и является «секретным общим ключом», который используется вами и Google. Ключ для подписи принадлежит исключительно вам и уникален для вашего идентификатора клиента. Поэтому его не следует разглашать. Этот ключ ни в коем случае нельзя пересылать в запросах, хранить на сайтах или публиковать на общедоступных форумах. Любой, кто получит этот ключ, сможет создавать ложные запросы от вашего имени.
Примечание. Этот закрытый криптографический ключ для подписи не идентичен ключам API, которые можно получить в Google Cloud Console.
Если вы потеряли закрытый криптографический ключ, его можно восстановить. Для этого войдите в Cloud Console и нажмите Карты: управление идентификатором клиента.
Примечание. Когда срок действия лицензии с тарифным планом Premium истечет, раздел Client ID исчезнет со страницы Учетные данные в Cloud Console.
Устранение неполадок, связанных с аутентификацией
Если ваш запрос имеет неверный формат или недопустимую подпись, платформа Google Карт вернет ошибку HTTP 403 (Forbidden) .
Для устранения неполадок с отдельными URL можно использовать отладчик URL Signing Debugger. Он позволяет быстро проверить URL и подпись, созданные приложением.
Кроме того, клиенты с планом Premium могут устранить неполадки, связанные с отдельными URL, в Cloud Console. Для этого нужно выбрать Resources > Google Maps Platform Premium Plan online tools > URL Signing Debugger for Web Service and Image APIs (Ресурсы > Онлайн-инструменты плана Premium платформы Google Карт > URL Signing Debugger для API веб-сервисов и изображений).
Если не указано иное, контент на этой странице предоставляется по лицензии Creative Commons «С указанием авторства 4.0», а примеры кода – по лицензии Apache 2.0. Подробнее об этом написано в правилах сайта. Java – это зарегистрированный товарный знак корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2021-08-25 UTC.
Где найти API ключ? Видео
2. Присвойте Имя ключу. Вы можете задать любое имя. Оно поможет быстро находить созданные ключи API.
В целях безопасности рекомендуем создавать отдельный ключ API для каждой новой интеграции.
Ключ необходимо держать в секрете, как и ваш пароль — не сообщайте его никому. Ознакомиться с документацией для разработчиков можно на странице ApiDocs
Похожие статьи
Как настроить SMTP интеграцию?
Как я могу интегрировать PayPal с GetResponse, чтобы добавить кнопки в сообщения и лендинги?
Популярные ресурсы
Продукт
- Email-маркетинг
- ИИ-генератор писем
- ИИ-генератор кампаний
- Автоответчики
- Автоматизации маркетинга
- Конструктор сайтов
- Лендинги
- Формы и всплывающие окна
- Все возможности
- Интеграции
- Цены
Помощь и ресурсы
- Центр поддержки
- Служба поддержки
- Ресурсы по онлайн-маркетингу
- Истории клиентов
- Подкаст по автоматизации операций
- Библиотека вебинаров
- Бесплатные шаблоны писем
- Бесплатные шаблоны сайтов
- Сравнение сервисов
- Документация по API
Компания
- О нас
- Вакансии
- Партнерские программы
- Программа для агентств
- Для инвесторов
- Специальные возможности
Как узнать свой api
В этой статье рассказывается, как создать ключ API для Maps SDK для Android, добавить его в приложение и защитить приложение с помощью ограничений ключа. Вы должны добавлять ключи API во все приложения, в которых используется комплект SDK.
Подготовка
Чтобы начать использовать Maps SDK для Android, вам необходимо создать проект с платежным аккаунтом и включить Maps SDK для Android. Инструкции вы можете найти в статье Настройки в Google Cloud Console.
Создание ключей API
Ключ API – это уникальный идентификатор, который используется для аутентификации запросов, связанных с вашим проектом. Он нужен для учета использования API и оплаты. С вашим проектом должен быть связан хотя бы один ключ API.
Чтобы создать его, выполните следующие действия:
Cloud Console
- Откройте страницу Google Maps Platform > Credentials (Платформа Google Карт > Учетные данные). Перейти на страницу Credentials (Учетные данные)
- На странице Учетные данные нажмите Создать учетные данные > Ключ API.
Появится диалоговое окно с созданным ключом API. - Нажмите Close (Закрыть).
Новый ключ API можно будет найти в разделе Ключи API на странице Учетные данные.
Не забудьте настроить ограничения для ключа API, прежде чем использовать его в рабочей среде.
Cloud SDK
gcloud alpha services api-keys create \ --project "PROJECT" \ --display-name "DISPLAY_NAME"
Прочитайте статьи о Google Cloud SDK, установке Cloud SDK и следующих командах:
Настройка ограничений для ключей API
Мы настоятельно рекомендуем ограничивать использование ключей только теми API, которые необходимы для работы вашего приложения. Это защитит ваше приложение от нежелательных запросов. Подробную информацию вы найдете в Рекомендациях по обеспечению безопасности доступа к API.
Новые ограничения, которые вы задаете в Cloud Console, переопределяют условия в разделе API restrictions (Допустимые API). Поэтому мы советуем придерживаться рекомендаций и создавать отдельные ключи API для каждого приложения и каждой платформы, на которой это приложение будет доступно.
При настройке ограничений ключа API вам потребуется указать цифровой отпечаток сертификата SHA-1, который был использован для подписи в приложении. Существует два типа сертификатов.
- Сертификат для отладки. Его следует использовать исключительно при тестировании приложений и работе с кодом до публикации. Не пытайтесь опубликовать приложение, подписанное с помощью сертификата для отладки. Этот сертификат создается автоматически при выполнении отладочной сборки приложения с помощью инструментов Android SDK.
- Сертификат для выпуска. Используйте этот сертификат, когда будете готовы разместить приложение в магазине. Он создается с помощью инструментов Android SDK при выполнении сборки в процессе подготовки к выпуску.
Дополнительную информацию о цифровых сертификатах вы найдете в руководстве по добавлению подписи в приложения.
О том, как получить цифровой отпечаток сертификата, можно прочитать в разделе об аутентификации клиентов. Если вы используете функцию подписания приложений в Google Play, вы можете найти цифровой отпечаток сертификата на странице подписания приложений в Play Console.
Чтобы задать ограничение для ключа API, выполните следующие действия:
Cloud Console
- Откройте страницу Google Maps Platform > Credentials (Платформа Google Карт > Учетные данные). Перейти на страницу Credentials (Учетные данные)
- Выберите нужный ключ API. Откроется страница со свойствами ключа API.
- В разделе Key restrictions (Ограничения для ключа) установите следующие ограничения:
- Ограничения для приложений:
- Выберите Приложения для Android.
- Нажмите + Название пакета и цифровой отпечаток.
- Укажите название пакета и цифровой отпечаток сертификата SHA-1. Пример:
com.example.android.mapexample
BB:0D:AC:74:D3:21:E1:43:67:71:9B:62:91:AF:A1:66:6E:44:5D:75
- Нажмите Restrict key (Применить ограничения для ключа).
- В раскрывающемся списке Выберите API нажмите Maps SDK для Android. Если Maps SDK для Android там нет, его необходимо включить.
Cloud SDK
Список существующих ключей.
gcloud services api-keys list --project no">PROJECT"
Снятие ограничений с существующего ключа.
gcloud alpha services api-keys update "projects/PROJECT/keys/KEY_ID" \ --clear-restrictions
Настройка новых ограничений для существующего ключа.
gcloud alpha services api-keys update "projects/PROJECT/keys/KEY_ID" \ --api_target="maps-android-backend.googleapis.com" --allowed-application no">SHA1_FINGERPRINT,package_name=ANDROID_PACKAGE_NAME"
Прочитайте статьи о Google Cloud SDK, установке Cloud SDK и следующих командах:
- gcloud alpha services api-keys update
- gcloud alpha services api-keys lookup
- gcloud services api-keys list
Что дальше
Теперь, когда у вас есть ключ API, создайте и настройте проект Android Studio.
Отправить отзывЕсли не указано иное, контент на этой странице предоставляется по лицензии Creative Commons «С указанием авторства 4.0», а примеры кода – по лицензии Apache 2.0. Подробнее об этом написано в правилах сайта. Java – это зарегистрированный товарный знак корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2023-06-26 UTC.
