Я пытаюсь выполнить интеграцию IdentityServer4 ( A ) с другой реализацией IdentityServer4 ( B ).Эти двое в настоящее время работают независимо друг от друга.
Я уже добился некоторого прогресса в этом, но я чувствую, что я делаю это неправильно. IdentityServer (A)
- Добавлен новый клиент (AllowedGrantTypes = GrantTypes.Implicit, )
IdentityServer(B)
- добавлен новый источник аутентификации AddOpenIdConnect
.AddOpenIdConnect("oidc", "Identity Server A", options =>
{
options.SignInScheme = IdentityConstants.ExternalScheme;
options.SignOutScheme = IdentityServerConstants.SignoutScheme;
options.SaveTokens = true;
options.RequireHttpsMetadata = false;
options.Authority = "http://localhost:5000";
options.ClientId = "identityServerB";
options.GetClaimsFromUserInfoEndpoint = true;
options.Scope.Add("roles");
options.Events.OnTokenValidated = async ctx =>
{
ctx.Principal.Claims.Append(new Claim("LoginSource", "IdentityServerA"));
};
});
Текущий результат, после использования внешнего входа в системумеханизм на B
- учетная запись создается как положено на B,
- , пользователь вышел из системы A
- B таблица aspneUser не заполняется данными пользователя из A
- B , заполняющими заявки пользователейТаблица с данными пользователей.
На этом этапе мне нужен способ или наилучшая практика для реализации этого:
- Создайте учетную запись от A до B и от B доА, в случае, если не существует.
- Слияние созданной учетной записи из источника или просто способ связать идентификаторы
- Возможность доступа к клиентам Identity Server независимо от того,источник аутентификации.
- Свяжите роль или любое утверждение для идентификации источника входа.
- обновите информацию о пользователе и сбросьте пароль