Я создаю единый вход для нескольких существующих проектов.Большинство приложений уже используют одну и ту же базу данных, поэтому одни и те же пользователи и я использую этих пользователей в IdentityServer.Но есть одно приложение, которое имеет собственную базу данных пользователей и экран входа в систему.Пользователи из этой таблицы используются в одной из таблиц в этом приложении (FK).
Моя идея состоит в том, чтобы оставить базу данных существующих пользователей как есть.Добавьте столбец MasterUserGuid
в Users
таблицу, которая будет содержать «главный» Guid пользователя (таким образом, пользователь, которого IdentityServer использует для аутентификации) и реализует следующий поток:
- Пользователь открывает приложение и не являетсявошедший в систему
- Пользователь перенаправлен на IdentityServer и использует глобальные учетные данные
- Пользователь перенаправлен обратно в приложение, которое получает глобальный идентификатор пользователя GUID из заявок и аутентифицирует локального пользователя (с этим GUID в
MasterUserGuid
столбец) вместо использования глобального пользователя
Проблема заключается в том, что я не знаю, как реализовать шаг 3
или вообще возможно ли это / поддерживается в IdentityServer4.На данный момент я перенаправлен на IdentityServer, аутентифицирован и перенаправлен обратно, но затем приложение пытается использовать этого внешнего пользователя.
Во время исследования я прочитал, что пользователи должны находиться в одной таблице, так что, возможно, этоПодход совершенно неправильный, и было бы лучше удалить локальных пользователей и отключить FK для упомянутой таблицы и выполнить некоторую ручную миграцию пользователей.
Возможен ли сценарий, описанный в приведенных мною шагах, и вменяемый?