使用 openId 连接两个身份服务器实例
Connect two instances of Identity server with openId
是否可以使用另一个身份服务器登录一个实例?
具体来说:一个是 public,另一个在公司防火墙后面。
示例:这家公司的用户想使用这两个 IDS 之间的某种安全反向通道,使用自己的公司凭据(例如 AD)登录到 public。
我知道这可以使用 "Sign-in with External Identity Providers" 但我希望它是动态配置的 - 因为公司的数量会随着时间的推移而增长。
有哪些选择可以实现这一目标?
为此,我最终实现了自己的 OIDC 中间件,它可以接受额外的 运行 时间设置,而不是使用在应用程序启动时定义的静态设置。
它仍然使用常规的 OIDC,因此它是一个前端通道操作,因此第 3 方提供商必须暴露在互联网上,您的提供商也需要直接视线。
为了做到这一点,我从 Microsoft.AspNetCore.Authentication.OpenIdConnect
包中继承了 OpenIdConnectHandler
并覆盖了以下虚拟方法,在必要时用我 运行time 提供的引用替换了对静态配置的引用:
- 处理未授权异步
- HandleRemoteAuthenticateAsync
- HandleSignOutAsync
- HandleSignOutCallbackAsync
是否可以使用另一个身份服务器登录一个实例?
具体来说:一个是 public,另一个在公司防火墙后面。
示例:这家公司的用户想使用这两个 IDS 之间的某种安全反向通道,使用自己的公司凭据(例如 AD)登录到 public。
我知道这可以使用 "Sign-in with External Identity Providers" 但我希望它是动态配置的 - 因为公司的数量会随着时间的推移而增长。
有哪些选择可以实现这一目标?
为此,我最终实现了自己的 OIDC 中间件,它可以接受额外的 运行 时间设置,而不是使用在应用程序启动时定义的静态设置。
它仍然使用常规的 OIDC,因此它是一个前端通道操作,因此第 3 方提供商必须暴露在互联网上,您的提供商也需要直接视线。
为了做到这一点,我从 Microsoft.AspNetCore.Authentication.OpenIdConnect
包中继承了 OpenIdConnectHandler
并覆盖了以下虚拟方法,在必要时用我 运行time 提供的引用替换了对静态配置的引用:
- 处理未授权异步
- HandleRemoteAuthenticateAsync
- HandleSignOutAsync
- HandleSignOutCallbackAsync