http认证鉴权02同域SSO

SSO 是英文 Single Sign On 的缩写,翻译过来就是单点登录。顾名思义,它把两个及以上个产品中的用户登录逻辑抽离出来,达到只输入一次用户名密码,就能同时登录多个产品的效果。

同域SSO


如图,同域 SSO 是最简单的一种情况。
此时,两个产品都是在一个域名下,单点登录是很自然的选择。我们来捋一捋步骤,搞清楚这里的步骤是理解后文的基础,千万不要跳过。
用户访问产品 a,向 后台服务器发送登录请求。
登录认证成功,服务器把用户的登录信息写入 session。
服务器为该用户生成一个 cookie,并加入到 response header 中,随着请求返回而写入浏览器。该 cookie 的域设定为 http://dxy.cn。
下一次,当用户访问同域名的产品 b 时,由于 a 和 b 在同一域名下,也是 http://dxy.cn,浏览器会自动带上之前的 cookie。此时后台服务器就可以通过该 cookie 来验证登录状态了。
实际上,这种场景就是最简单最传统的登录操作虽然我们把产品 a 和 b 人为分开了,但由于它们在同域上,就算看成是同一产品的不同类目也未尝不可。我们没有设置独立的 SSO 服务器,因为业务后台服务器本身就足以承担 SSO 的职能。

同父域SSO

同父域 SSO 是同域 SSO 的简单升级,唯一的不同在于,服务器在返回 cookie 的时候,要把cookie 的 domain 设置为其父域。
比如两个产品的地址分别为 http://a.dxy.cnhttp://b.dxy.cn,那么 cookie 的域设置为 http://dxy.cn 即可。在访问 a 和 b 时,这个 cookie 都能发送到服务器,本质上和同域 SSO 没有区别。

参考

什么是 SSO 与 CAS?:https://www.cnblogs.com/btgyoyo/p/10722010.html

认证鉴权系列
http认证鉴权01基本认证和摘要认证
http认证鉴权02同域SSO
http认证鉴权03跨域SSO之CAS
http认证鉴权04跨域SSO之OAuth2入门
http认证鉴权05CAS和OAuth2区别
http认证鉴权06CSRF跨站请求伪造

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×