我需要通过浏览器上的单一登录将凭据从一个Microsoft.NET Web应用程序传递到另一个。我希望将Windows Azure(ACS)作为我的安全令牌服务,并将Facebook/Open Id作为声明的颁发机构,仅用于身份验证目的。
有人知道我是如何在不同的.NET Web应用程序中实现"基于联合声明的身份验证和单点登录"的吗?
请注意,两个不同的Web应用程序托管在不同的数据中心(而不是云),凭据需要通过浏览器流动,这是否可以通过声明和cookie实现(如果是,如何实现)?
干杯
*更新例如,用户通过ACS登录应用程序A,然后点击应用程序A上的按钮,将其重定向到应用程序B(合作伙伴/第三方网站)
仅供参考-我不认为我有权更改应用程序B(合作伙伴网站),应用程序A是的。。。
您在这里描述的是一个与Windows Azure访问控制服务完美配合的混合场景。应用程序是在内部部署还是在云中都无关紧要。基本上,您的应用程序只需要使用ACS作为身份提供者(右键单击您的项目,添加STS引用)。一旦你做到了,以下将是可能的:
- 用户浏览到application1.com
- 需要身份验证。application1.com重定向到ACS的"登录页"(您可以在其中选择身份提供程序)或列出所有可用的身份提供程序
- 用户选择使用Windows Live
- 用户被重定向到login.live.com,在那里他可以输入自己的电子邮件地址和密码。他选择保存密码并保持连接
- 用户被重定向到带有某些声明的ACS。ACS再次重定向到application1.com
- 用户在application1.com中进行了身份验证,他的声明在应用程序中可用
- 用户连接到application2.com
- 需要身份验证。application2.com重定向到ACS的"登录页"(您可以在其中选择身份提供程序)或列出所有可用的身份提供程序
- 用户选择使用Windows Live
- 用户之前已经在Windows Live中进行了身份验证!login.live.com立即将他重定向到ACS,并附上一些声明
- ACS再次将一些声明重定向到application2.com
- 用户在application2.com中进行身份验证,并且他的声明在应用程序中可用
希望这能有所帮助。
Sandrino