Безопасность веб-API - Web API security
Безопасность веб-API влечет за собой аутентификация программы или пользователи, которые вызывают веб-API.
Наряду с простотой интеграции API возникают трудности с обеспечением надлежащего аутентификация (AuthN) и разрешение (AuthZ). В многопользовательской среде средства управления безопасностью, основанные на правильных AuthN и AuthZ, могут помочь гарантировать, что доступ к API будет ограничен теми, кто в нем нуждается (и имеет на это право). Соответствующие схемы AuthN позволяют производителям (API или сервисам) правильно идентифицировать потребителей (клиентов или вызывающие программы) и оценивать их уровень доступа (AuthZ). Другими словами, пусть потребитель вызывать определенный метод (бизнес-логику) на основе реквизиты для входа представлены?
"Недостатки дизайна интерфейсов широко распространены, из мира крипто процессоры через разноевстроенные системы прямо до антивирусное программное обеспечение и сама операционная система ".[1]
Метод аутентификации и авторизации
Наиболее распространенные методы аутентификации и авторизации включают.
- Статические строки: они похожи на пароли, которые API предоставляет потребителям.
- Динамические токены: это токены на основе времени, полученные вызывающим абонентом от службы аутентификации.
- Токены, делегированные пользователем: это такие токены, как OAuth[2] которые предоставляются на основе аутентификации пользователя.
- Политика & управление доступом на основе атрибутов: политики используют атрибуты для определения того, как 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 или Аксиоматика. Точка принятия решения о политике настроена с помощью политик, реализующих динамический контроль доступа, который может использовать любое количество атрибутов пользователя, ресурса, действия и контекста для определения того, какой доступ разрешен или запрещен. Политики могут касаться:
- ресурс (например, банковский счет)
- пользователь (например, покупатель)
- контекст (например, время суток)
- отношения (например, клиент, которому принадлежит аккаунт).
Политики выражаются в ALFA или XACML.
Рекомендации
- ^ «Атаки API» (PDF).
- ^ «OAuth 2.0 - OAuth». oauth.net. Получено 2015-10-10.
- ^ «Руководство по альтернативам веб-аутентификации: часть 2». unixpapa.com. Получено 2015-10-10.
- ^ Джон, Брэдли; Нат, Сакимура; Майкл, Джонс. «Веб-токен JSON (JWT)». tools.ietf.org. Получено 2015-10-10.
- ^ Хардт, Дик. «Платформа авторизации OAuth 2.0». tools.ietf.org. Получено 2015-10-11.