假设我有2个网站:domain1.com和domain2.com
我实现了如下:一旦用户使用domain1.com成功登录,我生成一个iframe,让他也登录到domain2.com。
<iframe width=1 height=1 src="domain2.com/sso-login?username=abc&password=encripted_password" />
在domain2.com上,我实现了一个方法sso-login来处理这个调用,如果用户名&amp;密码有效,我创建auth-cookie返回浏览器。因此,当他在其他标签中打开domain2.com时,他将自动登录。
用户在domain2.com中登录时的流程相同,我生成一个iframe,让用户在domain1.com中登录。
我想知道这个实现中是否存在任何安全漏洞或缺点?我还应该做些什么来提高安全性吗?
答案 0 :(得分:2)
不要发送用户名和密码。仅发送身份验证令牌:
<iframe width=1 height=1 src="https://domain2.com/sso-login?token=<%= Request.Cookies[FormsAuthentication.FormsCookieName].Value %>" />
然后让两个应用程序共享相同的machine keys,以便远程域可以解密它并为此域发出表单身份验证cookie。另外,请确保您只通过HTTPS发送令牌。
答案 1 :(得分:0)
您将遇到问题,因为许多现代浏览器不允许在指向其他域的iframe中设置Cookie。