在Windows Identity Foundation STS后面抽象OpenID Connect Idp



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

网站本身(Episerver(包含了基于STS提供的声明的所有定制授权逻辑,如果我们只是抛出STS,我们就必须替换所有这些逻辑。

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

关于它如何可行的个人想法(基于对openid connect如何工作的大量假设(,如果你知道如何回答,请跳过这个:

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

我接近了吗?

进一步澄清:

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

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

实现这一点的方法是通过OWIN(Katana是微软的实现(。WS-Fed和OpenIDConnect都有NuGet包。

有可用于Azure AD的示例-请参阅您可以用作指南的Microsoft Azure Active Directory示例和文档。

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

事实上,请查看IdentityServer3。

这是两者的开源STS实现。

最新更新