@WhiteNinja

Как правильно организовать доступ к API?

Здравствуйте, есть CRM-система на ASP.NET Core.
Для возможности её интеграции с другими системами необходимо реализовать API.
API предполагает и write- и read-методы.

Два вопроса:

I)

На данный момент я рассматриваю следующие варианты организации доступа к API:

1. API_KEY = GUID + Квоты по времени
При регистрации Клиента-API выдается API_KEY и с этим ключем необходимо выполнять любой
запрос к API, указывая API_KEY в соответствующем заголовке.

2. access_token = JWT (OAuth2.0 ClientCredentials Flow)
При регистрации Клиента-API выдается client_id и client_secret.
Для работы с API клиенту необходимо сначала выполнить запрос на получение токена (access_token)
указав grant_type = client_credentials, client_id и client_secret.
И уже имея access_token выполнять запросы к методам API указав его в Authorization-заголовке.
Это OAuth2.0 ClientCredentials Flow.

Какой из вариантов лучше подходит для этой задачи?

Я больше склоняюсь к простому API_KEY. Волнует безопасность этого подхода и хотелось бы узнать best practice.

II)

Также в API необходимо организовать Permission-подход к правам доступа, так как разные Клиенты-API могут иметь разные разрешения
для вызовов методов API.
Т.е. для каждого метода API завести соответствующий Permission, создать Roles (Роли), которые собирают в себе набор разрешенных для этих ролей Permissions.
И уже эти Роли выдаются каждому Клиенту-API.
Например:
Роль - "Поставщик данных" содержит в себе Permissions: (ImportProducts, ImportContacts)

Адекватный ли такой подход к организации прав доступа к API?
  • Вопрос задан
  • 246 просмотров
Пригласить эксперта
Ответы на вопрос 1
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Токены имеют смысл только в очень широкой системе. В узкой вы всегда чекаете доступ и все
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы