Spring Security基于Oauth2的SSO单点登录怎样做?一个注解搞定
一、说明 单点登录顾名思义就是在多个应用系统中,只需要登录一次,就可以访问其他相互信任的应用系统,免除多次登录的烦恼。本文主要介绍 同域 和 跨域 两种不同场景单点登录的实现原理,并使用 Spring Security 来实现一个最简单的 跨域 SSO客户端 。 二、原理说明 单点登录主流都是基于共享 cookie 来实现的,下面分别介绍 同域 和 跨域 下的两种场景具体怎样实现共享 cookie 的 2.1. 同域单点登录 适用场景 :都是企业自己的系统,所有系统都使用同一个一级域名通过不同的二级域名来区分。 举个例子 :公司有一个一级域名为 zlt.com ,我们有三个系统分别是: 门户系统(sso.zlt.com) 、 应用1(app1.zlt.com) 和 应用2(app2.zlt.com) ,需要实现系统之间的单点登录,实现架构如下: 核心原理: 门户系统 设置 Cookie 的 domain 为一级域名也就是 zlt.com ,这样就可以共享门户的 Cookie 给所有的使用该域名( xxx.zlt.com )的系统 使用 Spring Session 等技术让所有系统共享 Session 这样只要 门户系统 登录之后无论跳转 应用1 或者 应用2 ,都能通过门户 Cookie 中的 sessionId 读取到 Session 中的登录信息实现 单点登录 2.2.