【问题标题】:Abstracting OpenID Connect Idp behind a Windows Identity Foundation STS在 Windows Identity Foundation STS 后面抽象 OpenID Connect Idp
【发布时间】:2015-12-16 05:51:00
【问题描述】:

前提: 我有一个基础架构,我们有一个使用 Windows Identity Foundation 实现的自定义 RP-STS,为一些网站提供 SSO。此 STS 通过 WSFederation 与站点进行通信。此自定义 STS 即将被弃用,因为该组织正在将 Open ID Connect Idp 添加到基础架构中。

网站本身(Episerver)包含所有基于 STS 提供的声明的自定义授权逻辑,如果我们要简单地抛弃 STS,我们就必须替换所有这些逻辑。

问题: 将我们的 RP-STS 集成到 openId 连接提供程序的浏览器重定向流程是什么,以便最终用户浏览器同时获得我们的 RP STS 和 Open Id Connect IdP 的会话?

关于如何实现的个人想法(基于对 openid connect 如何工作的大量假设),如果您知道如何回答,请跳过此部分:

  1. 网站向 RP-STS 发送包含用户名/密码的 HTTP 帖子
  2. RP STS 响应浏览器重定向到 OpenId Connect Idp(重定向包含用户名/密码,并且回复地址设置为 RP STS)
  3. OpenId Connect Idp 创建本地会话 (???) 并通过重定向到 RP STS 进行响应,重定向包含 auth_token。 (我不确定进入 openid 连接登录流程的部分)
  4. RP STS 接收用户令牌并获取/询问用户数据、构建声明并构建本地会话
  5. RP STS 通过 WSFed 将 SAML 令牌中的声明发送到 RP 站点

我还接近吗?

进一步说明:

  • 我不想移除现有的 STS,而是将其背后的新基础架构更改抽象化,以便从最终用户站点的角度来看,身份对象和授权逻辑将保持不变。
  • 在查看 STS 和 Open ID Connect IDP 之间的登录/注销流程是否可行方面,我需要特别帮助

【问题讨论】:

    标签: authentication wif claims-based-identity federated-identity openid-connect


    【解决方案1】:

    WIF 和 OpenID Connect 是完全不同的协议,例如WIF 主要是基于被动配置文件的浏览器。令牌类型不同 - SAML 和 JWT 等。

    执行此操作的方法是通过 OWIN(Katana 是 Microsoft 实现)。 WS-Fed 和 OpenID Connect 都有 NuGet 包。

    有可用于 Azure AD 的示例 - 请参阅 Microsoft Azure Active Directory Samples and Documentation,您可以将其用作指南。

    OWIN 将允许您同时使用这两种协议。

    其实看看IdentityServer3

    这是两者的开源 STS 实现。

    【讨论】:

    • WIF 不是安全协议。它是一个实现 WS-Trust 和 WS-Federation 等协议的 Microsoft 库。它已被 .NET 4.5 中 System.IdentityModel 命名空间中的类所取代。
    • 如果我要交换我的最终用户站点以使用 OWIN 进行身份验证,那么最终的身份也会看起来不同,并且必须重写所有授权逻辑。这是我想避免的,我的问题与此有关。我的问题更多地与 openid 流程以及它是否可行有关。进一步澄清:我不想删除我们拥有的 STS,我想抽象它背后的新基础设施。
    • MvdD - 需要明确的是 - 4.5 中的类仍然是 WIF。它只是 .NET 的一部分,而不是单独的下载。所以 WIF 3.5 迁移到 WIF 4.5。
    • @Lan - 你为什么不将你的 STS 与 identityserver 联合起来?
    猜你喜欢
    • 2011-01-03
    • 2023-03-29
    • 2011-12-19
    • 2012-08-30
    • 2018-12-05
    • 2012-02-22
    • 2012-02-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多