【发布时间】:2018-12-18 18:17:52
【问题描述】:
是否可以使用另一个身份服务器实例登录到一个身份服务器?
具体来说:一个是公开的,另一个在公司防火墙后面。
示例:这家公司的用户希望使用这两个 IDS 之间的某种安全反向通道,使用其自己的公司凭据(例如 AD)登录到公共帐户。
我知道使用“使用外部身份提供商登录”可以实现这一点,但我希望这是动态可配置的 - 因为公司的数量会随着时间的推移而增长。
有哪些选择可以实现这一目标?
【问题讨论】:
是否可以使用另一个身份服务器实例登录到一个身份服务器?
具体来说:一个是公开的,另一个在公司防火墙后面。
示例:这家公司的用户希望使用这两个 IDS 之间的某种安全反向通道,使用其自己的公司凭据(例如 AD)登录到公共帐户。
我知道使用“使用外部身份提供商登录”可以实现这一点,但我希望这是动态可配置的 - 因为公司的数量会随着时间的推移而增长。
有哪些选择可以实现这一目标?
【问题讨论】:
为此,我最终实现了自己的 OIDC 中间件,该中间件可以接受额外的运行时设置,而不是使用在应用程序启动时定义的静态设置。
它仍然使用常规的 OIDC,因此它是一个前端渠道操作,因此第 3 方提供商必须暴露在互联网上,并且您的提供商也需要直接视线。
为此,我从 Microsoft.AspNetCore.Authentication.OpenIdConnect 包中的 OpenIdConnectHandler 继承并覆盖了以下虚拟方法,并在必要时将对静态配置的引用替换为运行时提供的引用:
【讨论】: