在Windows Identity Foundation STS后面提取OpenID Connect Idp

时间:2015-09-19 00:29:13

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

前提: 我有一个基础设施,我们有一个使用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. 网站将HTTP帖子发送到包含用户名/密码的RP-STS
  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站点
  6. 我甚至关闭了吗?

    进一步澄清:

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

1 个答案:

答案 0 :(得分:2)

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实现。