前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >springboot集成单点登录踩坑

springboot集成单点登录踩坑

作者头像
用户5166330
发布2019-04-16 15:06:48
8510
发布2019-04-16 15:06:48
举报
文章被收录于专栏:帅哥哥写代码帅哥哥写代码
故事背景

公司对于springboot集成单点登录这块技术已经成熟了。自己也在某个项目中成功的集成了一次。后来突然甲方要求换个单点集成。就相当于是把以前的单点登录地址换成另外一个登录地址。然后就安排了我去做三个系统的换址集成。

我对于单点的理解

正常的登录 进入自己系统的登录页面,输入用户名密码,登录系统。 单点登录 来到一个第三方的登录页面,输入用户名密码,在这个页面登录成功之后,就算成功的登录了应用系统。好处在于这个登录页面不仅仅是登录一个系统,可以同时登录多个系统。即所谓的一次登录,全程畅通。 实现条件 单点系统的数据库用户与应用系统中的用户要有对应关系。 原理

看图说话.png 图中4这步返回的用户名称应该是可配置的。因为我这边只是对接单点不是提供单点系统,所以也不确定。有时间可以搞,再分享。 从上面的看图说话就知道这个实现的前提是单点系统中的用户和应用系统中的用户之间有对应关系。

正题:坑在哪里?

真正的坑在于我对单点是菜鸟。你要搞三个系统,你得本地调试吧。当然理论上来说,改个地址,基本就ok。实际上也的确是。但是偏偏我就是这么运气不佳,换个地址就是登录不进。 坑点一:用户不存在

后台.png

前端.png 然后没啦。看不出问题。当然这是代码问题。一般情况下出现这种问题首先想到的是用户存不存在。但毕竟没有任何提示。 仔细研究系统代码,虽然代码中抛出了用户名称未找到异常,但是抛出的异常是包裹在如下代码之中

image.png 异常被springCas源码吞了,做了其他操作。导致不能够给出提示。看来在抛出异常之前,还应该加一步log,帮助后期定位问题。 坑点二:源码内部对用户属性的验证

image.png

image.png 抛出了一堆异常,但是真有条件不满足时

前端.png

后台.png 什么提示都没有。可能是我没有开启spring的调试,所以没有打出任何源码内部的异常。(这句话待考核) 坑点三之最坑:不怕出问题,一步一步调试总能找到原因,坑就坑在让你调试不了。 就刚刚二的问题,我解决最久,一是不知道有这些验证,二是前后端又没有给出明确的提示。那我就只有一步一调试了。遇到不能登录的问题我首先想到的是用户名称是否存在,单点系统校验ticket是否成功。由于二这个问题用户名称是存在的,我就断点打在了如下图所示的校验ticket位置

校验ticket.png 让我崩溃的是下图

未能识别目标.png 这就日嘎狗了。 你说这个系统是我不了解的就算了,这恰恰是三个系统中我成功部署上线的。这个和我部署在服务器上的唯一差别就是我本地比服务器上多加了端口。其余配置一模一样。(那个时候我不知道有用户状态的校验,ticket校验不过,我也调试不到后面校验用户状态那一步。)冥思苦想许久,前面两个系统已经成功,我也仔细对比了前面系统在这一步所传参数结构是否一致。没看出问题。(这还有个问题是前面两个系统的用户状态恰恰是对的,所以前面的系统本地测试一哈就通了)想了许久,配置也改了几次,还是不行。最后实在找不到问题,就觉得可能是ticket时间问题,我也只是预估,毕竟整个调试时间也不过4-8秒。前面系统太顺利,所以没有后面系统断点多,哪怕是对比的时候,我也仅仅是在校验ticket处打了断点。想到之后,我就在前面系统发送ticket校验的时候,故意等待几秒执行,果然也返回未识别目标,瞬间掌握问题所在,把后面系统发送ticket之前的断点去掉,果然ticket验证通过。最后再定位到用户状态问题,成功解决问题。 坑点四:用户权限不能为空

用户校验.png 在对用户的状态进行校验之后,对用户的各属性也有相应校验。

总结

上诉问题也不算坑吧,只是对认证机制不熟悉。也不知道ticket短时间就可以过期。使用框架固然很方便,但是要是不看源码,不理解其内部机制,解决问题也确实恼火。尤其是没有日志。程序猿常说看源码能成大神,我咋没感觉到呢。有时间我写分析springboot源码登录认证过程和springboot cas源码登录认证过程。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.09.05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 故事背景
  • 我对于单点的理解
  • 正题:坑在哪里?
  • 总结
相关产品与服务
访问管理
访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档