前提:我有一个基础设施,我们有一个用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如何工作的大量假设(,如果你知道如何回答,请跳过这个:
- 网站向RP-STS发送包含用户名/密码的HTTP帖子
- RP STS通过重定向到OpenId Connect Idp来响应浏览器(重定向包含用户名/密码,并为RP STS设置了一个replyto地址(
- OpenId Connect Idp创建一个本地会话(???(,并通过重定向到RP STS进行响应,重定向包含auth_token。(我不确定openid连接登录流中包含哪些部分(
- RP STS接收用户令牌并获取/请求用户数据、构建声明和构建本地会话
- 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实现。