@PHPjedi

Как разрабатывают сервисы?

Как разрабатывают сервисы, которые «общаются» между собой?

Допустим, авторизация реализована на JWT на nodejs.

На PHP реализована та часть, которая показывает посты для пользователей.

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

Как они должны вместе работать?
Как это вообще происходит?
Как проверяются токены между сервисами?...

Расскажите об этом по подробнее.

Спасибо!
  • Вопрос задан
  • 259 просмотров
Решения вопроса 1
Robur
@Robur
Знаю больше чем это необходимо
По разному но вам подойдет OAuth или OpenID.
Методов авторизации там больше одного, на все случаи жизни.
Как это все работает - открывайте спеку или посты на эту тему с человеческим языком и читайте.
Основное и главное - для этого нужен будет сервис который будет выдавать и проверять токены - либо готовый (все в гугле, например Auth0) либо свой (из опенсорса - keycloak вполне неплох)
Остальные сервисы и приложения работают с этим сервером и доверяют ему больше чем себе. Протоколы стандартные так что библиотеки есть под все популярные языки/фреймворки.
Правда не очень понятно зачем вам nodejs - токены JWT будет выдавать OAuth сервер. Хотя если он у вас написан на nodejs - то ок.

Пример:
пользователи на сайте авторизуются с именем и паролем на identity server (допустим это ваша нода), этот сервер возвращает помимо всего прочего в токене информацию о том что пользователю можно оставлять коменты (например добавлением scope: 'comment')
php сервер получает запрос с токеном на создание коментария, открывает этот токен, проверяет у вашей ноды что этот токен настоящий (они подписаны) и если настоящий, смотрит, есть ли там scope:'comment' и если да - то создает комментарий.
У админа будет например еще помимо возможности прокомментировать так же возможность удалить любой комментарий (например scope: 'comment-admin') - этот скоуп будет проверяться при удалении. А так же другие админские права.
Так же comment-admin можно например дать модератору.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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