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



我正在尝试使用另一个IndentityServer4( b )实现的IndentityServer4( a )集成。这两个目前正在彼此独立工作。

我已经对此取得了一些进展,但是我觉得我没有以正确的方式进行。 IdentityServer(a)

  • 添加了一个新客户端(允许GrantTypes = GrantTypes.implitic,

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 用用户数据填充用户索赔表。

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

  1. 在情况下创建从A到B,B到A的帐户不存在。
  2. 从来源合并创建的帐户,或者只是链接ID
  3. 的一种方法
  4. 无论身份验证源如何,都可以访问身份服务器客户端。
  5. 关联角色或任何识别登录源的主张。
  6. 更新用户信息和重置密码

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

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

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

与联邦网关文档解决的问题http://docs.sideityserver.io/en/latest/quickstarts/4_external_authentication.html

使用4_implicitflowauthenticationwithexternal QuickStart来识别和解决问题。

外部身份验证QuickStart

相关内容

  • 没有找到相关文章

最新更新