跨域的简单SSO

时间:2012-09-24 10:11:49

标签: asp.net html asp.net-mvc single-sign-on

假设我有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中登录。

我想知道这个实现中是否存在任何安全漏洞或缺点?我还应该做些什么来提高安全性吗?

2 个答案:

答案 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。