大一统的中央集权-SSO

         “号外号外,惊天大消息,人类要开始做SSO系统啦”。一大清早就听见PHP在哪里吆喝道。

        “大清早还让不让人睡觉了”,C恶狠狠的说。“虽说你是世界上最好的语言,但是也别到处卖弄啊,SSO是个什么鬼,说人话”

       PHP:大傻帽,SSO都不知道啊。Single Sign One 啊。单点登录啊。

        C:哈哈哈哈哈哈哈哈哈。让我笑一会儿。不是就个登录么?至于说的这么高大上啊。你去看看用我写的订单系统去,每天有多少人登录。他们想访问我的系统时,必须输入用户名和密码,然后我进行验证,验证通过后我就在我这边建立一个叫做session的东西,然后把sessionId通过cookie发送给浏览器,下次他们在登录的时候会带着cookie一起发过来,我从cookie中拿到sessionId就知道他们已经登录啦。通过cookie和session就可以把无状态通信的转换成有状态的啦,是不是so easy啊。C说完满脸自豪的样子。

        PHP:你说的登录没问题啊,可是人们并不是每天只支付你的订单系统哦。他们可能还需要登录用户系统,可能还需要登录库存系统呢。比如说有个叫小明的用户登录了你的订单系统,然后想去看库存系统,发现又让登录,再次输入用户名密码,然后又去登录用户系统,又输一次用户名密码,去访问财务系统,有来一遍。。。。。如果有一万个服务需要访问,那估计别干别的啦。

        C:这个这个这个。。。

        PHP:是吧,本来就是同一个用户,不论是访问订单系统也好,库存系统也罢,都是我们自己内部的系统,所以在一个地方登陆了就能自动登陆别的系统不就好了么。这就是人类要开始搞SSO得原因喽。

        C:哇,果然是高大上的样子。可是要怎么实现呢?感觉超级难得样子呢。

        PHP:你刚刚不是还洋洋得意的把登录的原理说了一遍么,自己好好想想呢。

        C:嗯。对。登录就是通过cookie和session来实现有状态的。我可以把cookie做共享啊。登录完订单系统之后我就有了cookie,去登录库存系统的时候我把cookie带过去不就行了么?

        PHP:NO! NO!NO! 你这样是有问题得。1,cookie是不能跨域的,比如说a.com产生的cookie是不能传递给b.com的。2,就算cookie可以带过来了,可是库存系统并没有session啊,如何验证呢?

        C:这个简单啊。1,我们可以让所有的系统都挂在同一个一级域名下啊。比如我叫a.corp.com,库存系统叫b.corp.com,财务系统叫c.corp.com,这样cookie不就能共享了嘛。2,既然cookie能共享,那session当然也能共享。之前把session存在自己的内存里,别人拿不到,我从内存里拿出来放在一个大家都能拿到的地方不就行了么?就像下面这样。哈哈哈我是不是很聪明。


        这个时候一旁的Java终于按奈不住了:你的系统中可能有很多个系统,而且各自实现的语言可能也不尽相同,有用C++的,有用PHP的,有用GO的,也有用Java的,共享session就会显得很麻烦啦。各个系统还得自己维护用户。其实啦,人们做SSO的初衷就是想消除多账号的问题,不用各自系统维护用户的信息。他们将会建立一个统一的认证中心,所用的用户的认证工作都交给这个认证中心来完成就OK啦。

        PHP和C:哇。好高大上哦,大佬,给我们讲讲呗。

        JAVA:看你们这么好学,听我娓娓道来。

        比如说现在用户第一次像订单系统发起了访问:www.a.corp.com,这个时候订单系统发现用户没有登录的话,那他需要做的一项操作就是重定向认证中心:www.sso.com/login?redirect=www.a.corp.com。其中www.sso.com/login就是认证中心的登录地址,redirect=www.a.corp.com就是登录完成后需要跳转到的地址。在认证中心登录之后认证中心会做以下几件事情:

1,建立一个session

2,发放ticket

3,重定向到你的地址,并在浏览器种下cookie信息。注意这个cookie是sso服务器的cookie哦。如:ssoid=1,domain=sso.com

大致流程如下:


需要注意的有两点:

1,进行了两次重定向哦。第一次是重定向到SSO的服务器,第二次是重定向我们的后端服务器。

2,流程完成后再浏览器种了两个cookie,一个是sso服务器的cookie,一个是订单系统的cookie。

        PHP和C听毕,拍手称快:大哥真不愧是世界上最好的语言呢。C接着问,那接着库存系统会发生什么呢?

        Java:这个简单啊。还记得上面在浏览器的cookie吗?看下面的流程。


你俩想想,这个流程之后浏览器会有几个cookie呢?

        PHP和C争先恐后的喊道:我知道我知道。应该是有三个的。一个是认证中心SSO的cookie: domain sso.com,一个是订单系统的cookie:a.corp.com,还有一个是库存系统的cookie:domain b.corp.com。实质上就是保存了一个认证中心的cookie和多个子系统的cookie而已啦

        Java:孺子可教也。一般我们称SSO的cookie的对应的会话成为全局会话,各自子系统cookie对应的会话称为局部会话。

        PHP和C:听起来是高大上,不会感觉好绕啊。又是各种重定向,又是各种cookie的,我们都懵逼了,实现起来岂不是更加的困难了。

        Java:你们真是out啊,听说过CAS(Central Authentication Service)吗?耶鲁大学提出的一套关于SSO的解决方案,现在都已经广泛的推广啦。大家都在用啦。

        PHP和C听毕,感叹道:学无止境啊。比我优秀的人都还在不断进步,我们还有不学习的道理啊。

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

推荐阅读更多精彩内容