如果面试被问到单点登录,你会怎么回答?

如果面试被问到单点登录,你会怎么回答?

作者:一位 Java 老猿,写代码第八年,头发还剩三根半

前言:这题我熟,我头发少不代表我不会!

在经历无数次面试之后,我总结出一个规律:只要你简历上写了“参与系统架构设计”,面试官就一定会在某个时刻扶了扶眼镜,问你一句

“那你说说,咱们系统的单点登录(SSO)是怎么做的?”

这时候,年轻的程序员可能一脸懵逼,脑海里浮现的是“登录一次能多次免密登录?”,而经验老辣的 Java 开发(比如我)早已微微一笑,默默打开脑海里的架构图工具,开始输出!

一、什么是单点登录,别装不认识

先别急着讲实现,定义要先讲清楚,不然面试官会觉得你是在背八股。

SSO 是什么?

Single Sign-On,简称 SSO,指的是用户在多个系统之间切换时,只需要登录一次,就可以访问所有系统,无需重复登录。

通俗点说:你进了公司大门(登录一次),就可以在不同楼层(系统)自由蹦跶,不需要每层都刷卡。

二、SSO 的实现原理,画个图脑子就清楚了

(当然面试现场你不能真画图,但你要能用嘴“画”出来

核心思路:认证中心 + 信任机制

  1. 用户访问系统 A:没登录,重定向到认证中心(SSO Server)。
  2. 认证中心让用户登录:登录成功后,生成一个 Token(比如 JWT 或 SessionId 等)。将 Token 存储在认证中心(可放 Redis,Session 等)。
  3. 认证中心重定向回系统 A:携带刚生成的 Token。
  4. 系统 A 拿 Token 去认证中心验证:成功后给用户发自己的 Session 或 Cookie。

用户再访问系统 B:

  • 系统 B 也发现没登录 → 重定向到认证中心;
  • 认证中心发现用户已经登录 → 直接放行,不用再输密码;
  • 系统 B 拿到 Token,验证通过后建立自己的会话。

跳板机会

技术大厂机会,前端-后端-测试,base多地,待遇还可以~

三、实现方式有哪些?面试要讲“姿势”!

1. Cookie 共享法(局限大,不推荐)

  • 只适用于同一主域名下的子系统。
  • 通过设置 Cookie 的 domain=.yourdomain.com 实现共享。

缺点: 跨域就GG,没法玩。

2. Token + 认证中心(主流做法)

  • 基于 JWTSession ID
  • 所有系统都信任同一个认证中心(SSO Server)。
  • 系统之间通过后端接口或前端重定向完成身份验证。

常见技术栈:

  • Java 后端:Spring Boot + Redis + JWT
  • 前端:携带 Token 访问,或 Cookie 自动携带
  • 网关:Nginx、Spring Cloud Gateway 做统一拦截

四、SSO 常见问题,别说你没踩过坑

1. Token 如何失效?

  • 设置过期时间(TTL),或用户主动注销;
  • Redis 存储 Token,加个 expire
  • JWT 的 exp 字段也能控制。

2. 如何实现注销登录?

  • 单点登出(Single Logout,SLO)实现起来比较复杂。
  • 通常做法是:用户发出注销请求,认证中心通知所有子系统清除本地会话。

最暴力但有效的做法:

  • Token 加入黑名单;
  • 或直接删掉 Redis 中的 Token。

五、Spring Security + OAuth2 就能搞定 SSO?

答:能,但你得会配!

  • Spring Security OAuth2 提供了完整的授权、认证机制;
  • 可以搭建一个认证服务器(Authorization Server);
  • 系统 A 和系统 B 都作为 Resource Server,只要验证 Token 即可。

六、面试官最爱问的灵魂问题:你们为什么要做 SSO?

别直接说“为了用户方便登录”,太表面。正确答法是:

  • 提高用户体验:避免重复登录;
  • 提高安全性:统一认证,统一注销;
  • 降低系统耦合:各系统不再自己管理用户系统;
  • 便于权限管理:可以结合统一的权限平台做 RBAC 控制。

七、总结:回答要套路,真懂才靠谱

面试回答模板(建议默背):

“我们是使用基于 Token 的 SSO 实现方式,搭建了一个统一的认证中心,用户首次登录后会生成一个全局 Token,后续访问其他系统会通过该 Token 验证身份,整个过程使用了 JWT + Redis + Spring Boot 实现。我们也做了单点登出机制,确保用户注销后所有系统都同步退出。”

说完,微笑,然后喝口水,看面试官点头。

尾声:别怕面试官,他怕你讲得太细

SSO 不是玄学,也不是玄幻小说,掌握原理 + 实战经验,回答时有层次、有细节、有态度,就赢了。

愿你下次面试,聊起 SSO,眼神中自带光芒,让面试官怀疑人生:“这哥们不会是来挖我架构的吧?”

——转载自:天天摸鱼的java工程师

#牛客创作赏金赛#
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-25 17:23
做完了怎么知道过没过呀
投递京东等公司10个岗位
点赞 评论 收藏
分享
评论
3
8
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务