XXL-SSO单点登录系统

1、转发和重定向的区别?

2、为什么在认证授权中心登录成功之后,会返回一个xxl-sso-sessionid参数?

3、第一次登录成功之后浏览器中会存在两个cookie
(1)客户端cookie
(2)服务端cookie

4、客户端访问系统的时候,会重定向到sso认证授权系统,登录成功之后跳回原来的地址

5、XXL-SSO和CAS的原理是一样的,CAS是国外的,XXL-SSO是国产的

6、为什么要做单点登录系统?
大型互联网公司中,公司旗下可能会有多个子系统,实现统一登录管理

7、XXL-SSO系统在国产开源软件排名第8名

8、-xxl-sso-servler:中央认证服务,支持集群
-xxl-ssl-client:客户端
-xxl-sso-samples:单点登录Client端接入示例项目
-xxl-sso-web-sample-springboot:基于Cookie,
-xxl-sso-token-sample-springboot:基于Token,支持移动端,防止cookie禁止

9、要加redis密码要修改Servler端代码。在JedisUtil中修改。

10、(1)配置三个host文件(2)客户端服务端都要配置redis(3)删除热部署用来测试案例,模拟两个不同系统

11、访问客户端的时候,如何自动重定向到认证授权中心的?
使用过滤器,如果没有获取到用户会话信息的话,自动重定向跳转到授权中心

12、客户端如何集成sso?
(1)加入一个过滤器

13、过滤器中可以配置排除路径

14、Client原理分析
(1)先从Cookie中获取XXL-SSO域名下的CookieId,过滤器拦截
(2)如果用户没有登陆的情况下(CookieId不存在),重定向到认证授权中心
为什么有个redirect_url参数?代表登录成功后重定向的路径
(3)登录成功后,通过用户信息去创建sessionId,认证授权系统通过sessionId设置Cookie
(4)认证授权系统回调到子系统中传递sessionId(xxl-sso-sessionid),此时子系统下还没有对应cookie信息
(5)回调到子系统的时候会再次经过过滤器拦截,此时设置客户端Cookie,之后如果判断Cookie已存在则不在设置

15、为什么认证授权系统登录之后回调原地址时还要拿sessionId去再次访问认证授权系统进行认证?
比较下面两个地址:
登录时重定向到认证授权系统地址:http://xxlssoserver.com:8080/xxl-sso-server/login?redirect_url=http://xxlssoclient1.com:8084/xxl-sso-web-sample-springboot/
登录成功之后回调原地址并带参数:http://xxlssoclient1.com:8084/xxl–sso-web-sample-springboot/?
xxl_sso_sessionid=1000_4529db8531d54e23856e44002ace6cbb
如果我直接伪造第二个地址,经过第二个地址时不去再次验证,那不是就代表登录成功了?这样是很危险的

16、其他子系统如何实现免密登录呢?
前提:第一个sso-client子系统已经认证授权登录了,同一个浏览器
第二个sso-client系统登录的话,重定向到认证授权系统,拿到认证授权系统域名下的Cookie信息,直接把这个Cookie信息返回给第二个sso-client保存在该域名下的Cookie中

17、项目如何集成xxl-sso?
服务端(认证授权中心):在分布式基础设施中创建子模块,把Demo拷贝过来
1、注册到Eureka上
2、修改WebController,使用feign调用会员的登录接口,登录成功后会返回带有用户信息的sessionId
3、修改登录界面
4、连接redis,用来存放sessionId和用户信息,redis密码在服务端设置

客户端:
1、加上XXLSSOConfig过滤器
2、排除路径,比如首页不需要拦截,在配置文件中配置
3、加上sso相关配置以及redis,配置redis是为了解决分布式session问题,以及验证sessionId
4、分布式session也要配置一个sessionConfig

18、xxl-sso为什么要使用redis?
服务端的sessionId是保存到redis中的

19、哪些地方会用到sso?
portal-web:会员登录、注册、商品搜索、下单,门户网站
pay-web:聚合支付平台

20、Xxl-Sso认证授权中心如何实现高可用?
集群,使用网关或者nginx做负载均衡和反向代理和故障转移,因为使用的是同一个redis,所以数据保持一致性,没有使用session,所以不用去实现session共享问题

21、谷歌有时候负载均衡失效,可以换火狐试试

22、获取本地cookie信息?是请求的域名的cookie信息?

23、怎么说某个系统是认证授权系统的子系统?
配置过滤器,过滤器中有个配置是重定向到指定路径,域名

24、同个域名下,不同端口的Cookie也是一样的,Cookie只和域名有关

25、为什么重启认证授权系统重启不用重新登录?
因为redis有缓存,且cookie没有删除

26、登出步骤
1、使用服务器域名,调用服务端登出方法,先获取Cookie信息
2、cookie存在则删除redis中的sessionid
3、删除cookie,结束

27、无法使用cookie,使用token实现sso,只适合移动端app,
登录成功后返回token,token存放在本地文件中,发送请求的时候把token放在请求头中,和redis对比

发布了54 篇原创文章 · 获赞 2 · 访问量 1873

猜你喜欢

转载自blog.csdn.net/qq_42972645/article/details/104573656