169 похожих чатов

Всем привет. Предположим, есть достаточно большой проект, сердцем которого является

некое API. Технологии не важны, но для контекста: PHP7 и GraphQL.

Далее есть некие клиенты, которые работают с API:

CLIENT1 - панель управления (админка) / ReactJS
CLIENT2 - клиент для гостей / PHP
CLIENT3 - личный кабинет для зарегистрированных / ReactJS
CLIENT4 - блог / PHP
...

Сейчас аутентификация пользователя на API происходит через JWT-token. Если вкратце, то мы делаем некий запрос с логином и паролем, получаем некий токен и с помощью него делаем уже авторизованные запросы.

Далее я столкнулся со следующим вопросом: а как аутентифицировать клиенты?

API имеет ряд запросов, которые не покрывает JWT, тоесть данные по этим запросам можно получить без аутентификации. Например пользователь заходит на CLIENT4, CLIENT4 в свою очередь делает запрос на API, получает список статей и показывает их пользователю (пользователь может быть гостем). Тут все верно.

Однако остается и такой вариант, когда пользователь может миновать CLIENT4, сделать запрос к API и получить данные на прямую. Вопрос заключается в том, как лучше всего закрыть API от всех прямых запросов и дать доступ только определенным клиентам?
———————————————————————————-
Некоторые дополнительные размышления.

Хорошим и безопасным вариантом было бы ограничить доступ и сделать API локальным, однако некоторые клиенты могут быть на другом сервере или требовать внешний доступ (например мобильные устройства).

Я отказался от использования протокола OAuth2, так-как по сути в проекте нет 3 стороны. Поэтому получается не совсем то, что нужно.

Единственный вариант пока приходит в голову, это некий дополнительный токен, который хранит каждый клиент и получает доступ к API подставляя в каждый запрос.

Собственно хотелось бы получить советы/рекомендации, возможно ссылки на технологии/протоколы, которые упустил.

3 ответов

13 просмотров

В чём проблема запихнуть название/идентификатор клиента в сам токен?

Может зарегать клиентов у себя в базе, дать им private public ключи, и далее проводить аутентификацию с помощью них? по публичному токену аутентифициурешь клиента, по приватному проверяешь подлинность подписи.

Вот тут

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

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта