单一标志的概念视图

时间:2012-10-12 18:42:54

标签: c# asp.net .net

我想为多个网站(sitea.com,siteb.com,sitec.com)创建一个单一登录。所有网站都在同一家公司。任何数据库也具有相同的公司/位置。一些是asp.net网络应用程序,一些是论坛。我想尝试抽象出SSO,以免与任何一个网站纠缠在一起。我在下面概述了我的方法:

  1. 用户登录sitea.com,对用户进行身份验证。 sessionid由sitea.com创建。
  2. 使用用户名和sessionid将cookie放在用户的计算机上。 sessionid被插入到数据库centralAuthDB中,所有站点都可以访问该数据库。
  3. 用户点击sitea.com中为siteb.com(论坛)执行SSO的链接。
  4. siteb.com从cookie中检索用户名和sessionid。然后,siteb.com会根据centralAuthDB检查这些凭据。
  5. 与centralAuthDB匹配,并对SSO进行身份验证。但是,论坛(siteb.com)也有自己的用户数据库。此用户名也会在此数据库中进行检查,现在用户可以无缝登录论坛。
  6. 以上是否安全实用?

    是否应通过webservice将凭证发送到centralAuthDB?

    Cookie是否需要一些通用名称?那么username和sessionid的值是否放在这个cookie中?

1 个答案:

答案 0 :(得分:0)

使用任何SSO,您将需要一个获取凭据并生成安全身份验证令牌的服务。必须对令牌进行加密,使其无法伪造;只有身份验证服务才能解密它以检查其有效性。然后,该令牌可以传递给您想要的任何内容 - 最有可能是在查询字符串中。 Cookie被排除在外,因为它们无法通过主机名访问。

正如您对问题的评论中所提到的,调查此问题的预先存在的解决方案是明智的。比你更聪明的人或我花了数千个工时来解决这些系统的所有问题。

我个人的选择是OAuth,因为它是我最熟悉的实现。您可能还想了解Facebook如何对令牌可能包含的内容进行身份验证。

Alden,Sr http://projects.nathanalden.com/JuniorRoute