通用架构是所谓的联合网关。在此方法中,identityserver充当一个或多个外部身份提供商的网关。

该架构具有以下优点:

  • 您的应用程序只需要了解一个令牌服务(网关),并且屏蔽了有关连接到外部提供程序的所有详细信息。这也意味着您可以添加或更改这些外部提供程序,而无需更新您的应用程序。
  • 您控制网关(而不是某些外部服务提供商) – 这意味着您可以对其进行任何更改,并保护您的应用程序免受外部提供程序可能对其自己的服务所做的更改。
  • 大多数外部提供商仅支持一组固定的声明和声明类型 – 中间有一个网关允许对提供商的响应进行后处理,以转换/添加/修改特定于域的身份信息。
  • 某些提供商不支持访问令牌(例如社交提供商) – 因为网关知道您的api,它可以根据外部身份发出访问令牌。
  • 某些提供商根据您连接的应用程序数量收费。网关充当外部提供程序的单个应用程序。在内部,您可以根据需要连接任意数量的应用程序。
  • 一些提供商使用专有协议或对标准协议进行专有修改 – 通过网关,您只需要处理一个地方。
  • 通过一个地方强制进行每次身份验证(内部或外部),可以为身份映射提供极大的灵活性,为所有应用程序提供稳定的身份并处理新的需求

换句话说 – 拥有联合网关可以让您对身份基础结构进行大量控制。由于您的用户身份是您最重要的资产之一,我们建议您控制网关。

27.1 实现

我们的快速入门ui使用了以下一些功能。另请参阅外部身份验证快速入门和有关外部提供程序的文档。

  • 您可以通过向identityserver应用程序添加身份验证处理程序来添加对外部身份提供程序的支持。
  • 你可以通过调用程序查询这些外部供应商iauthenticationschemeprovider。这允许基于已注册的外部提供程序动态呈现您的登录页面。
  • 我们的客户端配置模型允许基于每个客户端限制可用的提供者(使用该identityproviderrestrictions属性)。
  • 您还可以使用enablelocallogin客户端上的属性告诉您的ui是否应该呈现用户名/密码输入。
  • 我们的快速启动ui漏斗通过一个回调所有外部认证调用(见externallogincallbackaccountcontroller类)。这允许单点进行后处理。