Nexen2
@Nexen2
Web backend Yii2/Symfony Coder

Как сделать идентификацию хоста для API?

У нас есть в принципе работающий marketplace с API, клиентами которого являются бекенды на "бекендовых" языках - питон, PHP, т.д., в том числе в виде библиотек к фреймворкам. На бекенде прописан ключ API, каждый Whitelabel имеет доступ только к информации, созданной им самим. При авторизации клиента создается второй ключ, физического лица, часть API-запросов требует оба ключа в header запроса (X-Api-Key и обычный Auth-Basic, например работа с профилем клиента). Для конечного пользователя сайт ведет себя как вполне классический, но у которого API вместо базы данных.

Теперь новые времена и от нашей команды требуют сделать "клиенты" для этой API на JS под REACT, ангуляры и прочая. Возникает сразу же правильная идея идентифицируя клиента, выдать ему JWT токен. Тут все хорошо. Но как быть с идентификацией самого хоста? У каждого хоста/сайта/домена, как хотите понимайте, свои настройки, включая набор цен, товаров, внешний вид сайта и прочая. Да и разделять их все равно хочется, не хочется дать возможность клиенту с одного хоста возможность логинится на другом, к примеру. Значит, хост нужно как-то идентифицировать. Самый очевидный - по Origin в запросе, мне не нравится, так как его легко подделать. Другой вариант - таки выдать какой-то ключ-идентификатор каждому сайту, что бы все запросы с него сопровождались им. Но тогда его придется хранить в куке или браузерном local storage (в отличии от сайта с бекендом, где он не был никому виден). То есть будет виден пользователям. В том числе ушлым. Как же реализовать API, правильно работающем для разных доменов при еще незалогиненом пользователе?
  • Вопрос задан
  • 171 просмотр
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы