SSO - 在多个网站之间共享单个用户表或以某种方式保持多个用户表同步?

时间:2011-10-07 12:57:22

标签: asp.net forms-authentication single-sign-on

我正在为两个ASP.NET MVC3网站制作单点登录解决方案。这些网站位于不同的子域中。我正在使用表单身份验证,到目前为止我一切都运行良好。当我登录a.example.com时,我也会自动登录b.example.com。好的。

每个应用程序都有自己的数据库。

我的问题是 - 如果我想在两个站点之间保持某些用户信息同步(比如最后一个活动日期或某些用户偏好)那么我应该在两个数据库中都有一个用户表,并以某种方式保持它们同步或应该只有a.example.com的数据库有一个User表,b.example.com以某种方式读取和写入它吗?

感谢您的建议。

编辑:感谢adam,我倾向于将所有用户数据存储在单独的数据库中。我将验证用户的用户名和ID传递给身份验证cookie中的每个应用程序。任何人都可以就维护两个数据库之间的参照完整性提出任何建议吗?

1 个答案:

答案 0 :(得分:0)

我见过的大多数SSO解决方案都有一个中央accounts门户网站,用户可以在其中维护设置,更改电子邮件地址等。

想想Google:

  • google.com/reader
  • google.com/analytics
  • google.com/accounts

这表示单个用户存储,为多个站点提供身份验证。这具有各种好处,例如存储会话哈希的单个位置和其他安全细节(用于防止诸如中间人攻击之类的事情)。

在真正的SSO中,身份验证请求会重定向到中央身份验证系统(即google.com/accounts),进行身份验证,然后重定向到请求身份验证的服务。

根据您的描述,听起来您对每个站点/服务都有单独的身份验证,但用户数据库是共享的。