лучший способ получить данные пользователя с помощью единого входа

У меня возникла следующая проблема, и я не могу найти лучшего решения. У меня есть сервер SSO и клиентское приложение REST.

  1. 1 - клиент входит в систему единого входа, которая возвращает токен и идентификатор пользователя user_id.
  2. 2 - Приложение сохраняет эти данные (токен, user_id) в таблице (user_table) базы данных.
  3. 3 - Клиентское приложение должно перечислить всех пользователей и их информацию (имя, возраст, адрес и т. Д.), Но эта информация находится в системе единого входа.

Как лучше всего получить эту информацию о пользователе?

Я подумал о том, чтобы сделать каждого пользователя запросом SSO, передав токен и user_id, или когда клиент входит в систему, эта информация пользователя сохраняется в таблице user_table.

Но если пользователь обновит какую-то информацию с помощью другого клиентского приложения? Как я могу обновить все клиентские приложения?


person Gleydson S. Tavares    schedule 22.08.2018    source источник


Ответы (2)


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

  1. Синхронизация в реальном времени.
  2. Своевременная подготовка / обновление при SSO.

Дело 1.

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

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

Случай 2.

Когда пользователь выполняет процесс SSO (SAML / OIDC, JIT), его данные могут быть переданы из системы IdM в окончательное приложение, и в этот момент последнее приложение может использовать предоставленные данные для его синхронизации. Минусы. Если пользователь не выполняет SSO, учетная запись не создается / не обновляется.

Случай 1 имеет смысл в средах, где критически важно обновление пользовательских данных, таких как, например, LMS, где преподаватель должен знать набор учеников своего класса, но если вы полагаетесь на процесс SSO (SAML / OIDC, JIT) для создания / обновить учетную запись ученика, если ученик никогда не получает доступ к LMS, учитель никогда не узнает, что ученик существует.

person smartin    schedule 19.09.2018

У большинства SSO есть собственный API, к которому вы можете выполнять запросы, и вам придется это сделать, поскольку данные будут существовать только там. Как и Onelogin, который вы пометили, имеет пользовательский API, к которому вы могли бы запросить свое приложение, если бы у него был доступ к API.

Вы также можете сохранить эти данные в одном из клиентских приложений и использовать единый вход из других приложений для управления доступом к этим данным. Это оставит ваш SSO для контроля доступа, а вашим клиентам останется управлять данными, не относящимися к контролю доступа.

person IT Deano    schedule 17.09.2018