mannaro
@mannaro
Умею профессионально гуглить

Как организовать сложную авторизацию с openid connect?

Добрый день, коллеги! Появилась у меня задача, но всё не могу понять, как правильно её решить.

Вводные: есть партнёр, с которым происходит синхронизация пользователей. Читай - они нам передают ID, email и имя иногда. В их системе работают пользователи, которые авторизуются по OpenID Connect.

Также есть наша система, в которой эти пользователи должны делать какие-то действия, которые мы должны сохранять и привязывать к ID пользователей. Мы настраиваем авторизацию по OpenID Connect, пересылаем пользователя к ним (там он, допустим, уже авторизован). Пользователь прилетает к нам, мы имеем его Access Token, Refresh Token, ID и прочий фарш. Но у нас также есть свой сервер авторизации (тоже OpenID Connect), где пользователь также должен авторизоваться.

Получается, нам необходимо настроить такую связку: пользователь авторизуется у них => прилетает к нам, передавая его ID => авторизуется у нас сразу по этому ID.

Итого вопрос: как реализовать этот последний пункт грамотно? То есть, можно пойти в обход OpenID, который работает у нас и врубать авторизацию только по этому ID от партнёра, но это как-то не безопасно что-ли. Есть ли какие-то механизмы, которые позволяют объединить 2 OpenID Connect сервера без затрагивания сервера партнёра?
  • Вопрос задан
  • 461 просмотр
Решения вопроса 1
inoise
@inoise
Solution Architect, AWS Certified, Serverless
Вы получаете вот весь этот фарш - access token, refresh token, id token (у вас же OIDC). Сохраняете это в системе, из ID токена вы берете данные пользователя, создаете в своей системе (если не было такого ранее) и автоматически его логините на срок жизни токена. В каждой вашей системе отдельно. Так работает SSO. Второй OpenID сервер вам для этой операции не нужен. В крайнем случае вы можете использовать Federation
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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