我们在Classic ASP中有两个旧网站,在ASP.NET 2.0中有几个网站。我们的新开发也在ASP.NET中,我们也可能逐渐将我们的经典ASP站点移动到.NET。所有这些网站都使用相同的后端数据库。
目前我们计划将用户身份验证移至单个服务器并开始使用单点登录(SSO)。我无法决定什么是最好或最正确的方式。我们的asp.net网站使用FormsAutentication和CustomMembership以及RolesProvider,即我们使用自定义表而不是默认的aspnet_membership表。
我能想到的方式:
1:使用 Webservice :我可以将身份验证代码移动到网络服务,我们所有的网站都可以使用它。但是,当我们涉及到ClassicASP网站时,我不确定Single-Sign-on是如何适应的。
2:我听说 DotNetOpenAuth :我们的外部用户是由我们的内部员工创建的。他们只能使用我们提供的用户名/密码登录。因此他们无法使用Google,Yahoo或任何其他用户名/密码登录。所以我不确定DotNetOpenAuth是否适合我们的情况。我在DotNetOpenAuth下载中看到了SSO示例,但不知道如何开始。
如果有人能指出我正确的方向,请。我已经阅读了各种文章和文档,但没有弄清楚从哪里开始。
答案 0 :(得分:2)
嗯,可能是您可以选择其中一种被动单点登录协议。您可以在WS-Federation,SAML协议或Shibboleth之间进行选择,但第一个,使用Windows Indentity Foundation子系统在.NET上轻松支持WS-Federation。
WS-Federation的工作方式是,您外部化对单独的Web应用程序(所谓的安全令牌服务)的身份验证/授权。每个联合客户端应用程序(所谓的依赖方)都依赖于服务提供的信息。
基本控制流程如下:
WIF为您提供了轻松构建STS和RP的工具,并且遗留应用程序的集成也很简单 - 您可以努力在遗留应用程序级别处理协议或提供“brige”,使用.NET应用程序WIF依赖于STS并将auth信息传递给遗留应用程序。
同样伟大的是,使用WIF,您仍然坚持使用表单身份验证和成员资格提供程序等旧的,良好的概念 - 它可能是STS实现的首选。
WS-Federation协议本身不仅提供单点登录,还可以让您轻松处理单点登录(某些其他协议(如openid)不支持)。
详细了解本书中的主题:
http://www.amazon.com/Programming-Windows-Identity-Foundation-Dev/dp/0735627185
答案 1 :(得分:1)
结帐this guide“基于声明的身份和访问控制”。 第3章特别是:“基于声明的Web和Windows Azure单点登录”(Azure不是必需的)。
它很好地解释了现代 Microsoft实施单点登录策略的方式。
另外,这个TechNet article帮助我们开始使用WIF和ADFS 2.0。