微软云账号购买 单点登录SSO怎么配置
为什么要搞单点登录?别再让用户骂娘了
想象一下,你作为一个打工人,每天早上打开电脑,要先登录OA系统打卡,再登录CRM系统看报表,接着打开项目管理系统改Bug,最后还要登录邮箱查收消息。如果每个系统都要你输入一遍账号密码,且每个系统的密码策略还各不相同(有的要加特殊符号,有的要定期更换),那简直就是一场职场灾难。作为开发者,如果你还在每个新系统里重复写登录逻辑、存Session、验Cookie,那你离秃头也不远了。
单点登录(Single Sign-On,简称SSO)的核心逻辑非常简单:把“验证身份”这件事从各个业务系统中剥离出来,交给一个专业的管家。 你只要登录一次管家,管家给每个系统发一张通行证,大家就都认你这个VIP了。
理解SSO的核心:认准这三个角色
在搞配置之前,你得先认清谁是谁,不然配置起来就像盲人摸象。SSO的世界里通常有三个主角:
- User(用户): 就是那个被折磨的打工人。
- Service Provider (SP/客户端): 各个业务系统,比如你的OA、ERP。它们只负责干活,不负责查户口。
- Identity Provider (IdP/认证中心): SSO的大管家。所有用户的密码、权限都在这儿存着。
逻辑是这样的:当用户访问OA时,OA发现用户没登录,就把用户甩给IdP。IdP核对身份后,签发一个Token(令牌)给用户,用户拿着这个Token回OA,OA找IdP验一下,发现是真的,于是放行。整个过程就像在酒店前台办了入住(登录),手里拿了房卡(Token),去电梯、去健身房、去餐厅(各个业务系统)只需刷卡即可。
主流协议选型:选错协议,后期想死
现在市面上主流的SSO协议主要有三种,选型时一定要看清需求:
1. CAS (Central Authentication Service)
企业级的老大哥,Java界的标配。优点是文档全、实现稳,缺点是老气横秋,对前后端分离架构支持比较拧巴,现在的年轻人可能不太爱用。
2. OAuth 2.0
这玩意儿其实是搞授权的,不是专门搞登录的,但大家硬生生把它用成了登录协议。它的优势是生态极其强大,第三方登录(微信、GitHub授权)基本都走它。
3. OIDC (OpenID Connect)
如果说OAuth 2.0是交通工具,那OIDC就是在它上面建的高铁。它是基于OAuth 2.0的扩展,专门为身份认证设计的。目前互联网大厂的首选,如果你在做新项目,请毫不犹豫地选择OIDC。
保姆级配置实操:以OIDC为例
别被那些复杂的RFC文档吓到,配置SSO其实就三步走:
第一步:IdP环境搭建
别自己手撸一个IdP,除非你是搞安全的专家。直接用现成的开源方案,比如Keycloak。下载安装后,在后台创建一个Realm(域),在这个域里定义好你的Client(即你的业务系统),系统会自动生成Client ID和Client Secret,这俩玩意儿就是你身份的“出入证密钥”。
第二步:业务系统对接
在你的业务代码里,安装一个对应的OIDC库(比如前端用oidc-client-ts,后端用Spring Security OIDC)。在配置文件里填入IdP的地址(Issuer)、Client ID和Secret。设置好Callback URL(回调地址),这是为了让IdP验证完身份后,能把用户带回你的系统。
第三步:信任链与证书配置
这是最容易出错的地方。IdP签发的Token需要通过公钥/私钥进行签名和校验。你需要从IdP导出JWKS(JSON Web Key Set)地址,并在业务系统后台配置好这个公钥地址。如果系统报“Signature verification failed”,多半就是这儿公钥配错了或者时间戳不同步。
微软云账号购买 SSO配置中的那些坑,谁踩谁知道
避坑指南一:域名的玄学。 SSO通常涉及跨域问题。记得把IdP和所有业务系统的域名规划好,最好在同一个顶级域名下(如sso.corp.com, oa.corp.com),这样Cookie共享会省去很多麻烦,否则就得乖乖用Token跳转。
避坑指南二:Token过期策略。 不要把Access Token设置得永久有效!一旦泄露就是灾难。合理的做法是:Access Token短效(比如1小时),通过Refresh Token来静默刷新。别让用户每隔一小时就重新登录一次,那体验简直烂透了。
避坑指南三:注销的联动性。 单点登录容易,单点登出(SLO)最难。很多系统只退出了自己的Session,没通知IdP,结果用户回到OA发现还是登录状态。记得配置全局登出接口,当用户在IdP注销时,IdP要依次向所有已登录的子系统发送注销请求。
总结:SSO不是万能药
配置SSO的过程,本质上是在做一次“信任传递”的工程。它确实能极大提升用户体验,减轻开发负担,但它也引入了一个致命的风险点:IdP一旦宕机,全公司系统集体瘫痪。 所以,在配置SSO的同时,务必做好IdP的高可用部署、异地容灾以及严格的权限审计。
不要为了搞SSO而搞SSO。如果你的系统只有两个,完全没必要上这么复杂的架构,用简单的共享Session或者Redis缓存足矣。但如果你的系统矩阵已经在快速扩张,那请记住:好的架构是在做减法,把最繁琐的登录逻辑交给IdP,把最优雅的业务逻辑留给用户。 祝你在配置SSO的路上,少撞几次墙,少掉几根头发。

