他日若能阅此文,跨站登录不求人

前言

昨天朋友问我如何做到两个不同的站点之间的一次性认证,我说搞台服务器单独做一个登录系统,存储会话,其他站点只需要认可通过这台服务器的验证不就可以了吗?最后还跟人说用Memcache或者Redis来存储会话Session效果更好。

回头想想,自己有点站着说话不嫌腰疼。人家只是想简简单单地实现一个跨站登录的效果,你硬给人整个添加服务器的方案。不妥,对于一个初创企业来说,无异于雪上加霜。撸主小时候就有科技报国的抱负,加台服务器浪费钱还费电,最主要的是浪费社会主义资源,这事咱不能干。但是吧,除了这法子,我也不会其他的啊。闹心,那只刚点燃的香烟被撸主狠狠掐灭。所以这个技术问题咱要弄明白,至少思维理论上是通的,这不研究稍有成果,不敢独断专享,遂撰文与朋友们分享交流。

登录认证

这里要强调一点,看我的这篇博文,我默认你已经具备了基本的PHP知识。所以如果你感觉,不知所云,可以去自学网 http://www.zixue.it/修炼一下PHP内功。

既然我们讲登录认证,那么有两点必须搞清楚:

(1) 拿什么认证?
(2) 用什么规则认证?

拿什么认证

布尔教育在给学生讲解博客项目实战时,涉及到登录验证技术时,我们通常的做法是使用Cookie去验证。说到这里,吃瓜的群众肯定诧异了,什么?你用Cookie做Ticket(小票)来验证用户的合法性?万万不可,你不知道Cookie是可以伪造的吗?

(__) 嘻嘻……,知道呀。但是撸主可以对它进行加密,让你伪造Cookie无"迹"可寻,不就行了。这里既然涉及到了加密,撸主又要多说几句了,对Cookie的加密你可以选取2种方式,对称加密和非对称加密,如果你使用了对称加密,那么加密和解密的秘钥是相同的,比如我们常用的md5()就是对称加密。若是非对称加密算法,加密时使用私钥,解密时使用公钥。只要我们的加密算法和私钥不被泄漏,那么这个加解密体系就是安全的。所以说,你没必要去过多地担心Cookie的安全,而忽略了项目的进度。

用什么规则认证

我们今天要实现的效果是多个站点一次登录,这里可能有的吃瓜群众想歪了,撸主你是不是要讲企鹅认证授权登录啊?我看到企鹅号可以在很多网站登录,你要是这样想,撸主真为你捉急,朋友你的那个技术点是OAuth,开放授权协议。咱们今天要讲的知识点是跨站登录。

这里关于跨站登录,我们从其技术特点分析,可以分为两类:跨子域单点登录和完全跨单点域登录。

跨子域单点登录

跨子域,这里的子域就是子域名。如果有朋友对子域,顶级域不是很了解的话,我这里再说一遍,其实我们布尔教育PHP大狮班的博客实战项目中也有讲到,大家可以自行了解。

顶级域也称之根域,就拿我们布尔教育的域名来说吧。

2016-12-25_231506.jpg

看了这张图,不知道哥们儿姐们儿有没有学会区分呢?

如果这个时候,你还是不太清楚,那么我们一起找规律,域名中有N个点(.)就是N级域名,这下总会了吧。

好,我们接着细说跨子域单点登录。

这里有两个站点,一个站点的域名是dengpeng.itbool.com,我们暂且称之为D站,另一个站的域名是yanshiba.itbool.com,我们且称之为Y站。如何做到D站登录验证用户合法性,获得小票Cookie后,访问Y站时不需要登录认证呢?

我们都知道,Cookie是有域的限制的,不能跨域访问浏览器中的Cookie值。比如,我们在D站中登录验证后,获得小票,Cookie的域被设置成dengpeng.itbool.com,当我们紧接着去访问yanshiba.itbool.com站点时,浏览器无法携带D站给的小票去请求Y站。我们总说Cookie是一张Ticket,拿不到它也就无法利用算法对其做真伪的鉴别。

不!用!怕!

我们的Cookie域名参数是可以设置顶级域的,当我们把Cookie域设置成D站和Y站的顶级域itbool.com时,itbool.com的任何子域都是可以读取这张小票的。有了Cookie小票,在利用我们的解密算法对Cookie值进行解密,比对,就能很容易地判断用户的登录状态。

Cookie域

关于上面顶级域(根域)的具体值的设置,可以有两种写法。

法一:itbool.com
法二:.itbool.com

完全跨单点域登录

既然是完全跨域,那就是一组不相干的域名。itbool.com和zixue.it是北京零一科技有限公司的两个不同服务站点,那么我接接下来实现itbool.com站点登录后,在访问zixue.it站点时不需要二次验证?这个撸主犯难了,这完全是就是两个不想干的域名,设置根域也没用啊!这可如何是好。

你先别急,我们一起来看看这张请求认证流程图。

这种登录认证的核心技术就是来回重定向进行认证。

重定向登录

基本原理就如上图所示,我这里再来利用文字描述下:

当你访问布尔站点(itbool.com)时,看你有没有itbool_ticket,如果有且验证小票(ticke)正确,那么布尔站点就认为你有权限访问该站点的相关资源。如果没有,那么会重定向到自学站点(zixue.it),因为我们是单点登录(只要有一个站点登录其他站点就不再需要登录验证了),所以需要去看看自学站点是否登录,如果登录了自学站点能拿到zixue_ticket,且验证通过,那么这个时候会携带一串加密的Token,也可能是加密的Cookie值,重定向到布尔站点,布尔验证通过后,会给浏览器一个itbool_ticket的Cookie。如果自学站点没有登录,就会重定向到自学的登录页,登录完成后,携带加密的Token重定向到布尔站点,布尔验证后,然后在浏览器写入itbool_ticket。

这里我要重申一下:

上图中访问itbool.com跟zixue.it,无论谁先谁后,其基本流程都是一致的。

站群共享身份认证系统

好了,关于这2种单点登录技术我已经讲完了。至于第三种,就是独立出一个用户登录系统,做成一个独立的应用,这个应用什么事都不干,专门做用户登录认证的业务。这在本文开头我已经有所叙述。该技术的应用常见于大型的站群系统,比如企鹅,谷歌。

为了让大家更直观地了解,认证信息共享系统,我贴出网络图片。

共享身份认证系统

课后选读

如果大家想更多地研读单点登录技术的相关应用,我这里给大家推荐两个人气型产品,一个是Discuz的UCenter,另一个是PHPCMS的PHPSSO。

附上文档地址:

UCenter
http://faq.comsenz.com/library/UCenter/introduction/introduction_brief.htm
PHPSSO
http://v9.help.phpcms.cn/html/phpsso/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,319评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,801评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,567评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,156评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,019评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,090评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,500评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,192评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,474评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,566评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,338评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,212评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,572评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,890评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,169评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,478评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,661评论 2 335

推荐阅读更多精彩内容