我目前有一个 MVC4 自主开发的安全令牌服务 (STS),它与我们自己的身份验证数据库进行通信。使用此设置一切正常。作为一项新功能,我需要为域上的用户添加通过 ADFS2 进行单点登录 (SSO) 的功能(绕过当前的 un/pw 屏幕,他们只是“进入”)。需要明确的是,确实需要处理 3 种不同的登录可能性:域用户 (SSO)、域凭据(域用户不在域上输入其域 un/pw)以及来自数据库的原始 un/pw 身份验证。知道我知道如何将 web.config 设置添加到依赖应用程序以连接 STS,我将如何连接两个 wsFederation 被动重定向选项(当前重定向到 STS 用于 un/pw,以及 ADFS 选项)?这是必须在代码中处理的东西吗?通过 WSFederationAuthenticationModule 等重载类?处理我想要的最好的方法是什么?任何代码示例?谢谢你的时间!
问问题
138 次
1 回答
1
您只需在自定义 STS 上拥有登录屏幕和两个附加按钮,“使用 ADFS 登录”或“以域用户身份登录”。这两个按钮都重定向到与您的 STS 联合的另外两个 STS(您的 STS 扮演身份提供 STS 或依赖 STS 的角色)。
这不是很复杂。您需要的是创建两个SignInRequestMessage
s 并使用它们WriteQueryString
构建两个 url 到两个不同的 STS。另一种方法是使用该WSFederationAuthenticationModule::CreateSignInRequest
方法。
消费响应比较棘手,因为您需要一个 uri(或两个不同的 uri)来扮演端点角色。在 uri 中,您需要一个令牌接收器并尝试从提供者发送的 SAML 中创建一个令牌。
如果你偷看wif:FederatedPassiveSignIn
我曾经写过的方法的社区替换的来源,你就会明白
(至少一半的代码负责 WebForms 用户控制基础设施,但另一半是您正在寻找的)
不幸的是,这种自定义混合场景仅通过联邦模块的配置并不容易处理。
于 2014-05-20T18:36:09.093 回答