Защита API, вызываемого конечными пользователями клиента - PullRequest
0 голосов
/ 27 февраля 2019

Я создаю API, предназначенный для продажи различным клиентам.Этим клиентам будет предоставлен ключ API или что-то подобное, и они будут использовать API в виджете на своем веб-сайте.

Конечные пользователи веб-сайта клиентов должны иметь возможность использовать виджет анонимно (без входа в систему).).

Рабочий процесс:

enter image description here

Моя текущая идея состоит в том, чтобы сервер клиента извлек временный ключ и использовал его на веб-странице.,Браузер конечного пользователя будет использовать этот временный ключ для вызова нашего API.

Есть ли какая-либо причина, почему это не является хорошей практикой и / или небезопасной?

Или есть лучшее решение для хорошей практики?Можно ли, например, использовать для этого OAuth 2?

1 Ответ

0 голосов
/ 28 февраля 2019

Вам необходимо защитить свой API от клиентского приложения.Таким образом, для этого вы можете использовать OAuth 2 с типом гранта Client Credentials и настроить каждого клиента как приложение, чтобы каждый из них получил свой собственный набор ключей / секретных учетных данных.

Поскольку вы ничего не знаете о концепользователь, но все же должен отслеживать их, требовать настраиваемый заголовок endUserId при каждом запросе к вашему API, и вам нужно будет просто доверить клиенту предоставить вам действительный идентификатор для конечного пользователя, выполняющего запрос.

Для настройки OAuth используйте существующую библиотеку или службу OAuth.Я не рекомендую писать свои собственные.Если вы можете потратить немного денег, Okta и Auth0 - хороший выбор.Если ваш API написан на .net, вы можете использовать IdentityServer в качестве бесплатной опции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...