1

我想为多个网站(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) 也有自己的用户数据库。用户名也在这个数据库中被检查,现在用户无缝登录到论坛。

以上安全实用吗?

凭据是否应该通过 web 服务发送到 centralAuthDB?

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

4

1 回答 1

0

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

正如对您的问题的评论中提到的,调查该问题的现有解决方案是明智的。比你或我更聪明的人已经花费了数千个工时来解决此类系统的所有问题。

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

于 2012-11-10T04:40:19.413 回答