大家好,我是车辙,由于目前接手的业务涉及到了单点登录,所以一直在疯狂的去补充这方面的知识。也写下了这篇面试形式的文章,写的不好大家轻点 Diss。
面试开始
在焦急的等待中,一位看上去比较年轻的小伙子走了过来。我心想:这么年轻,看来今天的面试稳了。“你好,我是今天的面试官,一位97年的架构师。我看你简历上写了精通单点登录,我们今天就聊聊这个吧”
什么是单点登录
这也太简单了。讲个自己的糗事,在我刚实习的时候,我曾经以为单点登录就是单用户登录,比如说我在一台手机上登录后,另一台手机再次登录就会把原先的那个给挤掉。因为这个在一次技术分享会上还出了大糗。
实际上,单点登录是指在多个应用系统中,用户只需要登录任意一个系统,就可以访问其他的互相信任的系统。比如说我在天猫登录后,在浏览器上输入淘宝的域名,你就已经登录成功了。

为什么需要单点登录
面试官:“你觉得为什么需要单点登录,或者说单点登录的价值体现在哪里”
为了方便,如果一款产品的用户体验很差劲,那么基本上是没有用户愿意持续使用的。
通过单点登录,可以让用户在多系统中灵活跳转而不必重新登录,能有效提升用户体验。就像我们杭州的最多跑一次。
常见的登录实现
面试官:那我们先来聊一下常见的登录是怎么做的?
这不就是我们大学时候教的内容么,首先我们后端有个拦截器,每次请求接口时都会在拦截器内部进行判断:根据Cookie中传递的SessionId判断用户信息是否已经保存在Session中。如果不存在,说明用户未登录,让浏览器跳转到登录页进行登录。
登录验证成功后,把用户信息写入到 服务器Session中。于是通过Cookie中的SessionId和服务器建立了会话。
并且一般来说,浏览器中的Cookie不会设置过期时间,而是在服务端的Session中设置,由服务端来控制用户的登录态。

单点登录的设计思路
面试官:有点东西哈,那么如果要你设计实现一个单点登录系统,有没有什么简单点的方案?
我:首先我们要了解,单点登录其实就是用户的登录态在多个系统间进行共享。我们可以这样思考,假如用户在 A系统 登录后,然后点击 B系统,能够把用户相关信息给带过去,然后在 B系统中判断存在用户信息, 从而进行登录。这样做对于用户来说是完全无感知的,只需要在系统层面帮助用户进行登录即可。
传递数据到前端还是后端
面试官:“既然是传递数据至 系统B,你觉得该把数据传递到 系统B 的浏览器前端页面还是后端服务器呢

本文介绍了单点登录(SingleSign-On,SSO)的概念、为何需要它以及常见实现方式。讨论了通过Cookie和Session管理用户登录状态,并探讨了数据安全、跨域问题和防止XSS、CSRF攻击的措施。同时,提到了使用Spring-Session和CAS等解决方案来优化会话管理和提高系统间的兼容性。
最低0.47元/天 解锁文章
173万+

被折叠的 条评论
为什么被折叠?



