Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

登录界面在Client客户端实现SSO(需求) #53

Open
X-rapido opened this issue Mar 1, 2018 · 2 comments
Open

登录界面在Client客户端实现SSO(需求) #53

X-rapido opened this issue Mar 1, 2018 · 2 comments

Comments

@X-rapido
Copy link

X-rapido commented Mar 1, 2018

关于问题报描述

楼主你好,您的文章教程非常的赞,小弟收获良多,目前有如下需求,您看能不能帮忙给出一个好的解决方案,非常感谢。

需求描述

目前有6个单独的子项目A、B、C、D、E、F,都有各自的客户端登录界面(6个),现在要实现SSO效果,所以加上了一个CAS-Server服务

我想实现的效果是:登陆界面还是在客户端(不是在Server端增加主题登录界面方式)实现【同域名、不同域名】之间的SSO

举例
1、当我访问子项目 A 的受保护资源时,跳转到 A 的登录界面。(其他子项目同理)
2、子项目 A 登录界面输入用户名,密码实现 CAS登录成功。
3、当我访问任意子项目(B、C、D、E、F)的受保护资源时,用于 A 已经登录过了,所以可以直接访问
4、当我在任意子项目(B、C、D、E、F)登出时,全局实现登出效果。

业务场景

由于项目众多,很难在CAS服务端以增加修改主题的方式来实现SSO,协同起来也不是很方便,
例如:天猫、淘宝、1688、淘宝联盟等项目。页面风格不同,但是最终页面提交的地址一样。假设修改天猫的登录页面,我想也不是在服务器端来修改主题,然后重新部署,这样肯定会对其他子项目登录有所影响。(仅仅假设)
所以希望在各自子项目中修改登录方式来实现单点登录。

项目环境

CAS Server:5.2.2
CAS Client:3.5.0

其他:Maven/Gradle、IDEA、Tomcat

小弟QQ:1056856191

@kawhii
Copy link
Owner

kawhii commented Mar 2, 2018

由于最近比较忙,没来得及处理问题,望谅解。
我给出的建议可以是这样:

  1. org.jasig.cas.client.authentication.AuthenticationFilter下的属性casServerLoginUrl配置为客户端的登录地址
  2. 客户端登录页用iframe嵌套这cas的登录页,但service路径要处理好,也就是需要把该参数给到iframe的路径中
  3. 当在客户端登录后,也就是在cas的中登录成功后302回top页面,这个需要特殊处理

需解决问题:

  1. cas的iframe嵌套需要允许否则不能打开
  2. 302回客户单需要对iframe进行处理否则还停留在iframe中

@X-rapido
Copy link
Author

X-rapido commented Mar 6, 2018

@kawhii 楼主好,根据您提出的方案我们在上周做了相关尝试,如果子系统A,B,C没有经过前后端分离,使用Iframe这种方式还是可以的。

另外看到有关JWT的方式,请问下大哥有没有好的思路或Demo来实现多项目之间SSO效果。这样,就可以不使用Iframe嵌套方式了。

我自己看了下官网,流程图是可以看明白的,但是在代码编写上,通过RestAPI方式获取到CAS自动产生的JWT字符串之后,不太明白接下来该怎么操作了,比如Client怎么来验证JWT正确性。

您若有时间可以随时跟我沟通,非常感谢。

参考文章
1、https://apereo.github.io/cas/5.2.x/installation/Configure-ServiceTicket-JWT.html
2、http://blog.csdn.net/cuo9958/article/details/53580466

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants