首页 > 解决方案 > 使用 openId 连接身份服务器的两个实例

问题描述

是否可以使用另一个身份服务器实例登录身份服务器?
具体来说:一个是公开的,另一个在公司防火墙后面。

示例:这家公司的用户希望使用这两个 IDS 之间的某种安全反向通道,使用自己的公司凭据(例如 AD)登录到公共用户。

我知道使用“使用外部身份提供者登录”可以做到这一点,但我希望这是动态可配置的——因为公司的数量会随着时间的推移而增长。
有哪些选择可以实现这一目标?

标签: openididentityserver4

解决方案


为此,我最终实现了自己的 OIDC 中间件,该中间件可以接受额外的运行时设置,而不是使用在应用程序启动时定义的静态设置。

它仍然使用常规的 OIDC,因此它是一个前端渠道操作,因此第 3 方提供商必须暴露在互联网上,并且您的提供商也需要直接视线。

为此,我OpenIdConnectHandlerMicrosoft.AspNetCore.Authentication.OpenIdConnect包中继承并覆盖了以下虚拟方法,并在必要时将对静态配置的引用替换为运行时提供的引用:

  • HandleUnauthorizedAsync
  • HandleRemoteAuthenticateAsync
  • HandleSignOutAsync
  • HandleSignOutCallbackAsync

推荐阅读