近排开发的一个后台系统(域名:admin.test.test.com)在接入公司统一SSO时,遇到了cookie冲突引起的登录循环重定向的bug。

公司有一个统一的SSO登录页面,我们开发的系统是跳转到该页面实现登录验证的。有用户反映登录不了,浏览器提示循环重定向了,查看用户浏览器发现有两个相同名称的session cookie:

PHPSESSID=token1; path=/; expired=/; domain=.test.com  
PHPSESSID=token2; path=/; expired=/; domain=.test.test.com

显然这两个cookie的domain因为都是admin.test.test.com的根域名,使浏览器都发送到php后台系统了。第一个是后台系统(admin.test.test.com)写入的,是正确的session id,而第二个是由未知系统写入的。测试打印**$_COOKIE[‘PHPSESSID’]**发现输出是:

token2

很明显php读取到了错误的session id,所以导致系统读取不到保存在session中的登录信息,而误判用户为未登录,之后再把用户跳转回SSO登录页面,跳转回SSO系统后,SSO系统知道用户已登录过,再跳转回系统。。。这样就一直循环下去了=。=

More

IIS可以在一台服务器上配置多个web站点,每个站点通过ip地址、端口(port)和主机名(host)结合的标识符(ServerBindings Metabase)进行区分。标识字符串的格式如下:

IP:Port:Hostname

上面的IP和Hostname是可选项,假如设定站点时不指定,表示匹配所有。

主机名(Host Headers)是HTTP消息的一部分

浏览器和web服务器之间是通过http协议通信的。http发送的请求头部(headers)部分包含有很多信息,如Content-Length, Referer, Host等等。

More

Page 1 / 1
Top