API7 Enterprise v3.2.15: Многофакторная аутентификация с использованием нескольких учетных данных
September 18, 2024
По мере того как API-сервисы становятся все более сложными, традиционные методы контроля доступа, основанные исключительно на IP-адресах или базовых заголовках запросов, перестают быть достаточными. API7 Enterprise вводит концепцию "Потребителей", позволяя разработчикам привязывать потребителей к конкретным маршрутам или сервисам API с включенными плагинами аутентификации. Когда потребитель делает запрос, API-шлюз идентифицирует его на основе предоставленных учетных данных и применяет соответствующие политики контроля доступа в соответствии с установленными связями.
API7 Enterprise v3.2.15 улучшает существующие механизмы аутентификации потребителей. Он оптимизирует взаимодействие с часто используемыми плагинами, улучшает управление правами доступа и поддерживает несколько учетных данных для каждого плагина. Это позволяет более гибко управлять учетными данными и их ротацией.
Оптимизированное взаимодействие плагинов аутентификации потребителей
Теперь вы можете легко добавлять несколько учетных данных в одном плагине аутентификации. Конфигурация была переведена с написания кода на интуитивно понятные операции с формами, что делает процесс настройки более простым.
В настоящее время потребитель поддерживает следующие четыре метода аутентификации с несколькими учетными данными.
Аутентификация по ключу
Аутентификация по ключу — это метод, основанный на использовании ключа. Потребители должны включать уникальный ключ в свои запросы, который может быть передан в параметрах строки запроса или HTTP-заголовках. При настройке запросов потребители должны убедиться, что ключ правильно передается в запросах.
В конфигурации маршрута или сервиса необходимо включить плагин Key Auth с соответствующими правилами для проверки ключа в запросе. Шлюз проверяет, содержит ли запрос ожидаемый ключ и соответствует ли он конфигурации. Если проверка ключа проходит успешно, запрос получает доступ к сервису; если нет, запрос отклоняется.
Базовая аутентификация
Базовая аутентификация — это метод, основанный на имени пользователя и пароле. Потребители должны включать информацию об аутентификации, содержащую имя пользователя и пароль, в запрос. Обычно эта информация кодируется в заголовке Authorization HTTP-запроса, но может также передаваться через параметры строки запроса, хотя это не рекомендуется из-за возможного раскрытия конфиденциальной информации. Потребители должны убедиться, что закодированная информация об аутентификации правильно включена в запрос.
В конфигурации маршрута или сервиса необходимо включить плагин Basic Auth с соответствующими правилами для проверки информации об аутентификации. Шлюз проверяет, содержит ли запрос заголовок Authorization и соответствует ли он формату базовой аутентификации. Формат должен быть Basic <закодированное значение>, где <закодированное значение> — это результат кодирования имени пользователя и пароля, разделенных двоеточием, в Base64. Шлюз декодирует это значение и сравнивает имя пользователя и пароль с конфигурацией. Если они совпадают, запрос получает доступ к сервису; если нет, запрос отклоняется.
Обратите внимание, что базовая аутентификация передает имя пользователя и пароль в открытом виде, только закодированные в Base64 (не зашифрованные), что делает ее непригодной для сценариев с высокими требованиями к безопасности.
Аутентификация JWT
Аутентификация JWT — это метод, основанный на JSON Web Tokens (JWT). Потребители должны включать действительный JWT-токен в свои запросы, обычно в заголовке Authorization в формате Bearer <токен>, но он также может быть передан через параметры строки запроса или куки по необходимости. Потребители должны убедиться в правильности и действительности JWT-токена при настройке запросов.
При добавлении учетных данных JWT вы можете настроить ключевые элементы генерации JWT-токена, включая ключ (публичный или приватный) для подписи и проверки, секрет (ключ для симметричного шифрования), используемый алгоритм (например, HMAC-SHA256 или RSA-SHA256) и время истечения срока действия токена. Только потребители с действительными и неистекшими токенами могут успешно получить доступ к защищенным сервисам.
Аутентификация HMAC
Аутентификация HMAC — это метод, основанный на Hash-based Message Authentication Code (HMAC). Потребители должны сгенерировать значение HMAC для запроса, обычно используя предварительно согласованный ключ и определенные части запроса (например, метод запроса, URI, тело запроса). Это значение HMAC может быть включено в параметры строки запроса или HTTP-заголовки.
При настройке запросов потребители должны правильно сгенерировать и включить значение HMAC в соответствии с указанным алгоритмом и форматом. В частности, потребители используют известный ключ и информацию о запросе для генерации HMAC с использованием хэш-алгоритма (например, SHA-256) и добавляют его в запрос.

В конфигурации маршрута или сервиса необходимо включить плагин HMAC Auth с соответствующими правилами для проверки значения HMAC в запросе. Шлюз проверяет, присутствует ли значение HMAC в запросе, и пересчитывает HMAC, используя тот же предварительно согласованный ключ и алгоритм, чтобы убедиться в его действительности. Если пересчитанное значение HMAC совпадает с значением в запросе, запрос получает доступ к сервису.
Гранулярные политики прав доступа потребителей
Помимо оптимизации управления учетными данными, мы также улучшили управление правами доступа потребителей. Теперь вы можете определять права доступа на уровне отдельных потребителей, что позволяет более детально контролировать доступ. Права на чтение и запись учетных данных теперь управляются независимо от прав потребителей, что обеспечивает большую гибкость.
Итог
Последняя версия API7 Enterprise вносит значительные улучшения в аутентификацию потребителей и управление правами доступа. Она оптимизирует взаимодействие с плагинами, позволяет независимо управлять учетными данными, поддерживает несколько методов аутентификации и улучшает стратегии управления правами потребителей. Эти улучшения повышают гибкость управления учетными данными, безопасность системы и общий пользовательский опыт.
В будущих обновлениях могут быть добавлены дополнительные методы аутентификации и дальнейшие улучшения в управлении учетными данными, предлагая больше инновационных функций и улучшенный пользовательский опыт.
