两个IdentityServer4之间的集成(aspnet身份)

Integration between Two IdentityServer4 (aspnet identity)

我正在尝试将 IdentityServer4(A) 与另一个 IdentityServer4(B) 实现集成。这两个目前彼此独立工作。

我已经在这方面取得了一些进展,但我觉得我做的方式不正确。 IdentityServer(A)

IdentityServer(B)

.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上使用外部登录机制后

在这个阶段,我需要一种方法或最佳实践来实现:

  1. 在不存在的情况下创建A到B,B到A的账户。
  2. 从源合并创建的帐户,或者只是 link ids
  3. 的一种方式
  4. 无论身份验证源如何,都能够访问身份服务器客户端。
  5. 关联角色或任何声明以识别登录源。
  6. 更新用户信息并重设密码

您要实现的目标称为联合网关。

什么是联合网关,为什么需要它? http://docs.identityserver.io/en/latest/topics/federation_gateway.html

如何实现联邦网关? http://docs.identityserver.io/en/latest/quickstarts/4_external_authentication.html

Federation Gateway 文档已修复问题 http://docs.identityserver.io/en/latest/quickstarts/4_external_authentication.html

使用 4_ImplicitFlowAuthenticationWithExternal 快速入门来识别并修复问题。

External Authentication QuickStart