Защита ресурсов API для взаимодействия между машинами
Узнайте, как использовать OAuth 2.0 и JWT для защиты ваших ресурсов API для взаимодействия между машинами.
При создании проекта, который включает несколько сервисов, безопасность ресурсов API является критически важной задачей. В этой статье я покажу вам, как использовать OAuth 2.0 и JWT для защиты связи между сервисами (машина-к-машине), и как применять контроль доступа на основе ролей (RBAC), чтобы следовать принципу минимальных привилегий.
Начнем
Чтобы следовать, я предполагаю, что у вас есть следующие предварительные условия:
- Аккаунт в Logto Cloud или самостоятеленая инстанция Logto
- Как минимум два сервиса, которые должны взаимодействовать друг с другом
Для демонстрации давайте предположим, что у нас есть следующие сервисы:
- Сервис корзины покупок, который предоставляет API для управления корзинами
- Endpoint:
https://cart.example.com/api
- Endpoint:
- Сервис платежей, который предоставляет API для обработки платежей
- Endpoint:
https://payment.example.com/api
- Endpoint:
Процесс аутентификации
Теперь наш сервис корзины должен вызвать сервис платежей для обработки платежей. Процесс аутентификации следующий:
Некоторые ключевые понятия на диаграмме выше:
- JWT (RFC 7519): JSON Web Token. См. нашу предыдущую статью для введения в JWT.
- JWK (RFC 7517): JSON Web Key, который используется для проверки подписи JWT. Набор JWK - это набор JWKов.
- Грант "client_credentials" (RFC 6749): тип гранта в OAuth 2.0. Он использует учетные данные клиента для получения токена доступа. Мы продемонстрируем детали в следующих разделах.
Каждый участник на диаграмме выше играет свою роль в процессе аутентификации:
- Сервис корзины: клиент, которому нужно вызвать сервис платежей. Хотя это и сервис, он является клиентом в контексте OAuth 2.0, и такие клиенты мы называем "machine-to-machine applications" в Logto.
- Logto: сервер авторизации OAuth 2.0, который выдает токены доступа.
- Сервис платежей: ресурс API, который предоставляет API для обработки платежей.
Давайте пройдемся по процессу аутентификации шаг за шагом.