跨多个域的多个应用程序(Web和Silverlight)之间的SSO

时间:2011-07-22 09:02:24

标签: c# web-services authentication single-sign-on

这是我的情况,

我有几个申请:   - 使用.net cms在没有活动目录域的webhost上外部运行的网站  (基于使用cms数据库的表单身份验证进行身份验证)   - 在客户网络和域内部运行的几个silverlight应用程序  (通过活动目录进行身份验证,映射到数据库中的用户表,当前未在外部发布的应用程序)

假设我希望所有这些应用程序能够对用户进行身份验证,而不是对自己的数据库进行身份验证,而是使用集中式数据库。 (并非所有应用程序都在不同的网络中运行,因为应用程序可能存储用户角色等,所以可以接受映射到本地用户帐户) 在用户上我想存储它所属的客户,是否有权使用该应用程序和更多个人信息

请注意,将来这也必须适用于Windows窗体/ wcf应用程序,因此不能选择cookie。

最好的方法是什么?

我考虑过使用存储所有信息的数据库设置已发布的soap服务, 然后为每个应用程序编写一些逻辑以使用此Web服务进行身份验证。 但我并不热衷于通过任何人都可以访问的网络服务发布所有这些信息。 如果我使用域上的基本身份验证来保护此Web服务,则凭据在干净测试中发送,这不是私有用户信息的选项。

有没有人知道如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您可以使用基于联合协议的Web sso,例如SAML或WS-Federation 在您的情况下,最明显的解决方案将基于Active Directory联合身份验证服务

您可以基于ADFS设置中央身份验证服务器,并在每个Web服务器上部署ADFS代理 当用户尝试访问其中一个应用程序时,他将被重定向到中央身份验证服务器。该服务器将负责对他进行身份验证,可能会进行一些访问控制验证并将安全令牌发回给您的应用程序 所有这些电影都不依赖于cookie,而是通过POST / GET方法通过用户的浏览器交换数据 另一点需要注意的是,它与Windows Identity Foundation(WIF)框架很好地集成,因此Windows Forms / WCF应用程序应该没有问题。