【问题标题】:Connect two instances of Identity server with openId使用 openId 连接两个身份服务器实例
【发布时间】:2018-12-18 18:17:52
【问题描述】:

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

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

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

【问题讨论】:

    标签: openid identityserver4


    【解决方案1】:

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

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

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

    • HandleUnauthorizedAsync
    • HandleRemoteAuthenticateAsync
    • HandleSignOutAsync
    • HandleSignOutCallbackAsync

    【讨论】:

    • 拜托,你能分享一些细节吗?
    • 您想知道什么?它基本上归结为采用标准中间件并覆盖我需要的方法并将关键内容(即客户端 ID 和授权 URL)更改为来自传递给 Challenge 方法的 AuthenticationProperties,而不是在 ConfigureServices 或 Configure 中定义的 OpenIdConnectOptions。跨度>
    • 只是您覆盖的方法的名称 - 将我推向正确的方向。
    猜你喜欢
    • 2013-11-18
    • 1970-01-01
    • 2018-07-09
    • 2016-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-28
    相关资源
    最近更新 更多