我需要通过浏览器上的单点登录将凭据从一个 Microsoft .NET Web 应用程序传递到另一个 Microsoft .NET Web 应用程序。我希望利用 Windows Azure (ACS) 作为我的安全 token 服务,并使用 Facebook/Open Id 作为仅用于身份验证目的的声明的颁发机构。
有谁知道我如何在不同的 .NET Web 应用程序中实现“基于联合声明的身份验证和单点登录”?
请注意,两个不同的 Web 应用程序托管在不同的数据中心(而不是云)中,凭证需要通过浏览器流动,这是否可以通过声明和 cookie 来实现(如果可以,如何实现)?
干杯
*更新 例如用户通过 ACS 登录应用程序 A,然后单击应用程序 A 上的按钮,将其重定向到应用程序 B(合作伙伴/第 3 方站点)
仅供引用 - 我认为我无权更改应用程序 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 中进行身份验证,并且他的声明可在应用程序中查看。
希望这有帮助。
桑德里诺
关于.net - 基于联合声明的身份验证和单点登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9918589/