@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?
  • Вопрос задан
  • 90 просмотров
Пригласить эксперта
Ответы на вопрос 2
@sergeyiljin
Делаю дело
JWT и распределение прав по ролям.
Ответ написан
firedragon
@firedragon Куратор тега C#
Senior .NET developer
Токены имеют смысл только в очень широкой системе. В узкой вы всегда чекаете доступ и все
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
05 авг. 2020, в 21:55
20000 руб./за проект
05 авг. 2020, в 20:58
10000 руб./за проект
05 авг. 2020, в 20:21
10000 руб./за проект