我现在已经阅读了大量的SSO文章,但我还没有发现任何适合我们需求的文章,因此我正在考虑构建一个能够解决我们问题的adhoc SSO解决方案。我希望你们帮助我评估这个解决方案在安全性和性能方面有多好,非常感谢。
想象一下,我们有3个或更多网站全部使用asp.net 4.5
domain1.com(主站点) domain2.com domain3.com ...
所有网站共享相同的用户数据库,其中包含登录凭据以及其他用户相关信息。 Domain1.com就像剩下的网站一样,但有一个例外,它有一个共享登录页面和一个webservices.asmx类,用于检查用户是否已登录。
以下是发生的事情:
1:任何一个列出的网站上的未识别用户想要查看该特定网站上的保护页面,该网站使用JSONP访问domain1.com上的网络服务,以查看是否已在用户计算机上创建了cookie 。在这种情况下,没有创建cookie。
2:用户被重定向到domain1.com上的登录页面
3:用户登录,domain1.com在用户计算机上创建一个cookie,并将用户重定向回他来自的地方。
4:现在用户转到另一个网站上的另一个受保护页面,该页面再次使用JSONP访问domain1.com上的webservices,该网站服务利用HttpContext检查用户是否登录domain1.com并将结果作为JSONP返回
5:domain3.com检查JSONP结果并决定是否允许用户访问受保护的页面。
每次用户点击受保护资源时,步骤4和5都会重复,因此当用户从domain1.com注销时,所有剩余的站点都会知道它。通过这种方式,我们只需要维护一个用户数据库,我们不需要依赖令牌和随机数。此外,我们希望在所有剩余网站的iframe中放置一个迷你登录页面(来自domain1.com),以便它反映用户当前的登录状态。
这个解决方案有多好?欢迎任何建议和问题,非常感谢。