Безопасность веб-API - Web API security

Безопасность веб-API влечет за собой аутентификация программы или пользователи, которые вызывают веб-API.

Наряду с простотой интеграции API возникают трудности с обеспечением надлежащего аутентификация (AuthN) и разрешение (AuthZ). В многопользовательской среде средства управления безопасностью, основанные на правильных AuthN и AuthZ, могут помочь гарантировать, что доступ к API будет ограничен теми, кто в нем нуждается (и имеет на это право). Соответствующие схемы AuthN позволяют производителям (API или сервисам) правильно идентифицировать потребителей (клиентов или вызывающие программы) и оценивать их уровень доступа (AuthZ). Другими словами, пусть потребитель вызывать определенный метод (бизнес-логику) на основе реквизиты для входа представлены?

"Недостатки дизайна интерфейсов широко распространены, из мира крипто процессоры через разноевстроенные системы прямо до антивирусное программное обеспечение и сама операционная система ".[1]

Метод аутентификации и авторизации

Наиболее распространенные методы аутентификации и авторизации включают.

  1. Статические строки: они похожи на пароли, которые API предоставляет потребителям.
  2. Динамические токены: это токены на основе времени, полученные вызывающим абонентом от службы аутентификации.
  3. Токены, делегированные пользователем: это такие токены, как OAuth[2] которые предоставляются на основе аутентификации пользователя.
  4. Политика & управление доступом на основе атрибутов: политики используют атрибуты для определения того, как API могут быть вызваны с использованием таких стандартов, как АЛЬФА или же XACML.

Вышеуказанные методы обеспечивают разный уровень безопасности и простоту интеграции. Часто самый простой метод интеграции предлагает и самую слабую модель безопасности.

Статические строки

Блок-схема базовой аутентификации

В методе статических строк вызывающий API или клиент встраивает строку как токен в запрос. Этот метод часто называют базовая аутентификация. "С точки зрения безопасности, базовая аутентификация не очень удовлетворительна. Это означает отправку пароля пользователя по сети в виде открытого текста для каждой страницы, к которой осуществляется доступ (если только не используется безопасный протокол нижнего уровня, например SSL, используется для шифрования всех транзакций). Таким образом, пользователь очень уязвим для любых анализаторы пакетов в сети."[3]

Динамические токены

Когда API защищен динамическим токеном, есть временный nonce вставлен в токен. У токена есть время жизни (TTL), по истечении которого клиент должен получить новый токен. В методе API есть проверка времени алгоритм, а если срок действия токена истек, запрос запрещен. "Примером такого токена является Веб-токен JSON. Утверждение «exp» (время истечения) определяет время истечения срока, по истечении которого JWT НЕ ДОЛЖЕН приниматься в обработку ».[4]

Токен, делегированный пользователем

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

Платформа авторизации OAuth 2.0 позволяет стороннему приложению получать ограниченный доступ к HTTP service, либо от имени владельца ресурса, организуя взаимодействие утверждения между владельцем ресурса и службой HTTP, либо разрешая стороннему приложению получать доступ от своего имени.[5]

Детальная авторизация для API

Контроль доступа на основе атрибутов

В этом подходе точка применения политики существует либо в самом API, в структуре API (в качестве перехватчика или обработчика сообщений), либо в качестве шлюза API (например, WSO2, Конг или похожий ), который перехватывает вызов API и / или ответ от API. Он преобразует его в запрос авторизации (обычно в XACML), который отправляет в точку принятия решения о политике (PDP), например. AuthZForce или Аксиоматика. Точка принятия решения о политике настроена с помощью политик, реализующих динамический контроль доступа, который может использовать любое количество атрибутов пользователя, ресурса, действия и контекста для определения того, какой доступ разрешен или запрещен. Политики могут касаться:

  1. ресурс (например, банковский счет)
  2. пользователь (например, покупатель)
  3. контекст (например, время суток)
  4. отношения (например, клиент, которому принадлежит аккаунт).

Политики выражаются в ALFA или XACML.

Рекомендации

  1. ^ «Атаки API» (PDF).
  2. ^ «OAuth 2.0 - OAuth». oauth.net. Получено 2015-10-10.
  3. ^ «Руководство по альтернативам веб-аутентификации: часть 2». unixpapa.com. Получено 2015-10-10.
  4. ^ Джон, Брэдли; Нат, Сакимура; Майкл, Джонс. «Веб-токен JSON (JWT)». tools.ietf.org. Получено 2015-10-10.
  5. ^ Хардт, Дик. «Платформа авторизации OAuth 2.0». tools.ietf.org. Получено 2015-10-11.