免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2292 | 回复: 0
打印 上一主题 下一主题

WordPress MU 的 Cookie 登录验证方法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-05-31 19:58 |只看该作者 |倒序浏览
一同学想从 WordPress MU 系统登录,然后直接跳转到第二个站点(子站),以此实现单点登录的效果。因为第二站是子站,所以可以直接看到 WordPress 系统的 Cookie。只要能在子站里识别保存用户登录信息的 Cookie,那就可以支持单点登录。
WordPress MU(2.6、2.7.1) 的登录信息保存在一个 wordpress_logged_in_ 的 Cookie 中。此字段由三段值构成,分别是用户名、有效期和 HMAC(HMAC 是签名)。这里用户名是固定的;但是有效期是 UNIX 时间,其值满足两天时间,是变化的;HMAC 则是由前两者生成的签名,用作校验。
搜索 wordpress_logged_in_ 可以发现 LOGGED_IN_COOKIE,继而可以发现 wp_validate_auth_cookie() 就是验证的函数。此函数会分解 cookie,然后以用户名与有效期生成 verify hmac,再与 cookie hmac 比较。
生成 verify hmac 的过程,其实比较简单。首先是利用 LOGGED_IN_KEY 与 LOGGED_IN_SALT 联合生成一个密串,此密串再与用户名、有效期一起生成第一次的 key hmac,再用 key hmac 与用户名、有效期生成 verify hmac。
示意如下:
$username;
$expiration;
$hmac;
$data = $username . '|' . $expiration;
$salt = apply_filters('salt', LOGGED_IN_KEY . LOGGED_IN_SALT); // 默认其实就是 LOGGED_IN_KEY . LOGGED_IN_SALT
$key = hash_hmac('md5', $data, $salt);
$hash = hash_hmac('md5', $data, $key);
return $hash == $hmac;


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/24581/showart_1950670.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP