我目前有一个MVC4本土安全令牌服务(STS),它与我们自己的身份验证数据库进行通信。使用此设置,一切正常。作为一项新功能,我需要通过ADFS2为域上的用户添加单点登录(SSO)功能(绕过当前的un / pw屏幕,并且它们只是'in')。要明确的是,确实需要处理3种不同的登录可能性:域用户(SSO),域凭据(域用户不在域上进入域un / pw),以及来自数据库的原始un / pw auth。知道我对将依赖应用程序的web.config设置添加到STS的了解,我如何连接两个wsFederation被动重定向选项(当前重定向到STS for un / pw和ADFS选项)?这是否必须通过重载类(如WSFederationAuthenticationModule)在代码中处理?什么是处理我想要的最好方法?任何代码示例?谢谢你的时间!
答案 0 :(得分:1)
您只需在自定义STS和另外两个按钮上登录屏幕,"使用ADFS登录"或者"以域用户身份登录"。这两个按钮都重定向到您的STS联合的另外两个STS(您的STS然后扮演身份提供STS或依赖STS的角色)。
这不是很复杂。你需要的是创建两个SignInRequestMessage
并使用他们的WriteQueryString
构建两个URL到两个不同的STS。另一种方法是使用WSFederationAuthenticationModule::CreateSignInRequest
方法。
由于您需要一个扮演端点角色的单个uri(或两个不同的uris),因此消费响应非常棘手。在uri中,您需要一个令牌接收器并尝试从提供者发送的SAML中创建令牌。
如果你偷看我曾经写过的wif:FederatedPassiveSignIn
方法的社区替代来源,你会得到这个想法
(至少有一半的代码负责WebForms用户控制基础架构,但另一半是您正在寻找的)
不幸的是,只有联邦模块的配置才能轻松处理这种自定义混合场景。