我正在为两个ASP.NET MVC3网站制作单点登录解决方案。这些网站位于不同的子域中。我正在使用表单身份验证,到目前为止我一切都运行良好。当我登录a.example.com时,我也会自动登录b.example.com。好的。
每个应用程序都有自己的数据库。
我的问题是 - 如果我想在两个站点之间保持某些用户信息同步(比如最后一个活动日期或某些用户偏好)那么我应该在两个数据库中都有一个用户表,并以某种方式保持它们同步或应该只有a.example.com的数据库有一个User表,b.example.com以某种方式读取和写入它吗?
感谢您的建议。
编辑:感谢adam,我倾向于将所有用户数据存储在单独的数据库中。我将验证用户的用户名和ID传递给身份验证cookie中的每个应用程序。任何人都可以就维护两个数据库之间的参照完整性提出任何建议吗?
答案 0 :(得分:0)
我见过的大多数SSO解决方案都有一个中央accounts
门户网站,用户可以在其中维护设置,更改电子邮件地址等。
想想Google:
这表示单个用户存储,为多个站点提供身份验证。这具有各种好处,例如存储会话哈希的单个位置和其他安全细节(用于防止诸如中间人攻击之类的事情)。
在真正的SSO中,身份验证请求会重定向到中央身份验证系统(即google.com/accounts),进行身份验证,然后重定向到请求身份验证的服务。
根据您的描述,听起来您对每个站点/服务都有单独的身份验证,但用户数据库是共享的。