Skip to content
IRC-CodingIRC-Coding
AuthentifizierungAuthorizationAPI KeysOAuth2JWTRBAC

API Authentifizierung и Authorization: основы

Изучите API Authentifizierung и Authorization: различия, OAuth2, JWT, API Keys, RBAC, best practices.

S

schutzgeist

5 min read
API Authentifizierung и Authorization: основы

API Authentication и Authorization

Authentication проверяет личность клиента, а Authorization определяет, какие действия клиент может выполнять.

Краткое описание

API Authentication и Authorization — два базовых механизма безопасности для интерфейсов. Authentication проверяет, кто получает доступ к API, например через API Keys, OAuth2 токены или сертификаты. Authorization решает, какие ресурсы и действия доступны аутентифицированному пользователю, обычно на основе ролей, разрешений или атрибутов. Хорошая архитектура безопасности чётко разделяет оба концепта, использует надёжную аутентификацию и проверяет разрешения для каждого endpoint’а. Если клиент прошёл аутентификацию, это не означает, что он может видеть или изменять все данные. Правильная реализация Authentication и Authorization защищает от утечки данных, несанкционированного доступа и манипуляций.

Ключевые компоненты

Authentication

Authentication — это процесс, который проверяет личность пользователя или клиента. Он отвечает на вопрос: кто ты? Распространённые методы включают пароли, API Keys, OAuth2 токены, клиентские сертификаты и биометрические факторы. Для API аутентификация обычно осуществляется через заголовки или токены.

Authorization

Authorization — это процесс, который после успешной аутентификации определяет, что разрешено. Он отвечает на вопрос: что ты можешь делать? Authorization основана на ролях, правах, владении ресурсами или атрибутах. Пользователь может быть аутентифицирован, но иметь только доступ на чтение к определённым данным.

API Keys

API Keys — это простые секретные строки, которые клиент отправляет при каждом запросе. Они легко реализуются, но менее безопасны, чем методы на основе токенов. API Keys подходят для внутренних или общедоступных интерфейсов с низким риском, но должны передаваться по TLS и регулярно обновляться.

OAuth2

OAuth2 — это фреймворк авторизации, который позволяет клиентам получать доступ к ресурсам от имени пользователя без разглашения пароля. Он определяет различные потоки: Authorization Code, Client Credentials, Implicit и Device Code. OAuth2 используется в современных веб и мобильных API.

OpenID Connect

OpenID Connect — это слой аутентификации на базе OAuth2. Он позволяет проверить личность пользователя и предоставляет ID Token с информацией типа имени и почты. OpenID Connect используется для Single Sign-On и аутентификации на основе пользователя.

JSON Web Tokens

JSON Web Tokens, сокращённо JWT, — это компактные самоописываемые токены, содержащие claims. Они состоят из заголовка, payload’а и подписи. JWT часто используются для API аутентификации и Authorization, но должны быть корректно подписаны и валидированы.

RBAC

RBAC — это Role-Based Access Control. Разрешения назначаются ролям, пользователи получают одну или несколько ролей. Например, администратор может всё, редактор только редактирует контент, зритель только читает. RBAC простой в понимании и широко распространён.

ABAC

ABAC — это Attribute-Based Access Control. Разрешения выводятся из атрибутов пользователя, ресурса и окружения. Пример: пользователь может редактировать файл только если он владелец и это рабочее время с 9 до 17. ABAC гибче чем RBAC, но и сложнее.

Multi-Factor Authentication

Multi-Factor Authentication требует несколько независимых доказательств личности, например пароль и одноразовый код. Для API MFA часто реализуется через дополнительные шаги проверки или аппаратные токены, особенно для чувствительных операций.

Least Privilege Принцип

Least Privilege гласит, что пользователи и клиенты получают только минимальные разрешения, необходимые для их задачи. Меньше разрешений снижает риск утечек данных и несанкционированных действий. Разрешения нужно регулярно проверять и обновлять.

Практический пример

Система управления документами предоставляет различные endpoint’ы для разных ролей. Authentication осуществляется через Bearer Token в заголовке Authorization.

GET /api/v1/documents
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...

Сервер проверяет токен и определяет роль пользователя:

  • Viewer получает только доступ на чтение.
  • Editor может создавать и редактировать документы.
  • Administrator может удалять документы и управлять пользователями.

Пример endpoint’а с RBAC:

DELETE /api/v1/documents/123
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...

Editor получает 403 Forbidden, потому что у него нет разрешения на удаление. Administrator получает 204 No Content. Authentication и Authorization проверяются отдельно: сначала токен, потом разрешение.

FAQ: API Authentication и Authorization

1. В чём разница между Authentication и Authorization?

Authentication проверяет личность пользователя или клиента. Authorization определяет, какие действия и ресурсы доступны аутентифицированному пользователю.

2. Что такое API Key?

API Key — это секретный ключ, который клиент отправляет в запросах для идентификации. API Keys просты в реализации, но менее безопасны чем современные методы на основе токенов.

3. Что такое OAuth2?

OAuth2 — это фреймворк авторизации, позволяющий клиентам получать доступ к ресурсам от имени пользователя без знания пароля. Он поддерживает различные потоки для разных сценариев.

4. Что такое OpenID Connect?

OpenID Connect — это слой аутентификации на базе OAuth2. Он предоставляет ID Token с информацией о личности и используется для Single Sign-On и аутентификации на основе пользователя.

5. Что такое JWT?

JWT расшифровывается как JSON Web Token. Это компактный формат токена с заголовком, payload’ом и подписью. JWT содержит claims типа личности и времени истечения и часто используются для доступа к API.

6. Что такое RBAC?

RBAC расшифровывается как Role-Based Access Control. Разрешения назначаются ролям, пользователи получают одну или несколько ролей. RBAC прост и хорошо подходит для многих стандартных приложений.

7. Что такое ABAC?

ABAC расшифровывается как Attribute-Based Access Control. Разрешения выводятся из атрибутов пользователя, ресурса и окружения. ABAC гибче чем RBAC, но сложнее в реализации.

8. Что означает Least Privilege?

Least Privilege означает, что пользователи и клиенты получают только минимальные разрешения, нужные для своей задачи. Это снижает риск ущерба при компрометации.

9. Следует ли использовать API Keys для общедоступных API?

API Keys можно использовать для общедоступных API с низким риском, например для Rate Limiting или простой идентификации. Для чувствительных данных или операций записи следует использовать более безопасные методы типа OAuth2 или JWT.

10. Что такое Bearer Token?

Bearer Token — это токен, который клиент отправляет в заголовке Authorization. Тот, кто обладает токеном, считается авторизованным. Bearer Tokens должны быть защищены и короткоживущи.

11. Что такое Multi-Factor Authentication?

Multi-Factor Authentication требует несколько независимых доказательств личности, например пароль и одноразовый код. Это значительно повышает безопасность, особенно для чувствительных операций.

12. В чём разница между OAuth2 Scopes и RBAC?

Scopes определяют, на какие ресурсы или действия может получить доступ клиент, обычно в контексте токена. RBAC назначает разрешения через роли внутри приложения. Оба подхода можно комбинировать.

13. Почему Authorization не должна выполняться только на клиенте?

Клиенты можно манипулировать. Authorization всегда должна быть реализована на сервере, так как сервер — единственное надёжное место. Проверки на фронтенде только для удобства пользователя.

14. Что такое Token Refresh?

Token Refresh — это процесс получения нового Access Token с помощью Refresh Token. Access Tokens остаются короткоживущими, Refresh Tokens позволяют продлить сеанс без повторного ввода пароля.

15. Какие типичные ошибки в API безопасности?

Типичные ошибки: передача без шифрования, долгоживущие токены, отсутствие валидации токена, проверки разрешений только на клиенте, жёстко закодированные ключи и недостаточное логирование проверок.

Продолжение обучения по API

Следующий материал в нашем курсе посвящен REST API Security: Authentifizierung, Autorisierung und Schutzmaßnahmen — полная защита REST-API с помощью OAuth, JWT, RBAC, CORS и Rate Limiting.

Источники

  1. https://datatracker.ietf.org/doc/html/rfc6749
  2. https://openid.net/connect/
  3. https://datatracker.ietf.org/doc/html/rfc7519

Рекомендуемые книги по безопасности API

Если вы хотите углубиться в тему аутентификации API, авторизации и общей безопасности, рекомендуем следующие издания:

Keine Bücher für Kategorie "security" gefunden.

Назад к блогу
Share:

Похожие статьи