gubin_niko
@gubin_niko

А как вы реализовываете кроссдоменную авторизацию?

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

Задача:
Есть сервер авторизации с хранящимися на нём аккаунтами пользователей, с правами доступами и многим другим. Есть микросервисы в которых нужна авторизация для доступа к правам (собственно к правам для этого микросервиса) и данным. Если входим на одном из сервисов, должны авторизоваться на каждом из других (нюанс опишу позже). Аналогично при выходе. (Физически все микросервисы могут находиться на разных серверах, работать на разных версиях библиотек, работать с разными БД (или вовсе не использовать оную))

Какие у меня мысли:
Авторизацию проводить на стороне сервера авторизаций (пусть как у google - accounts.example.com), после редиректом будем возвращаться на нужный нам сервис. Вложить в html iframe с внейшней ссылкой для проверки\продления сессии (и если сессии нет, то js внутри iframe будет отправлять нас на сервер авторизаций).

Нюанс автоматической авторизации:
Необходимо нажать на кнопку, пользователя перенесёт на сервер авторизации, а оттуда обратно.

Все эти вещи я подсмотрел у google, потому многих вещей я всё ещё не знаю. К примеру:
- Как реализовать сохранение сессии на стороне микросервиса после редиректа, дабы данные не были скомпрометированы? (шифровать?)
- Как хранить сессию на стороне микросервиса? (я думаю, что по старинке, в сессии)

Буду благодарен за любую теорию. Но давайте помнить, что это дискуссия, без хейта, пожалуйста)
  • Вопрос задан
  • 500 просмотров
Решения вопроса 1
nmk2002
@nmk2002
работаю в ИБ
Вы практически описали протокол SAML. То, что вы называете сервером авторизации, в терминологии SAML является Identity Provider (IdP). Остальные сервисы - Service Providers (SP).
При попытке войти на один из SP вас редиректит на IdP для проверки, аутентифицированы вы уже или нет. Если да, то тут же происходит обратный редирект на SP с подписанными данными о вашей аутентифицированной сессии. Если вы не были аутентифицированы, то IdP сначала проверит ваши учетные данные (логин-пароль, OTP или что еще вы настроете), а потом так же произведет перенаправление браузера на SP с подписанной информацией о пользователе и статусе его сессии.
В протоколе SAML реализован single logout.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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