欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java SSO 之Cas 笔记

程序员文章站 2022-05-05 12:10:57
...

最近项目比较大,子系统比较多,有要使用单点登录的需求,这就使用cas serive


集成的步骤:

可以直接下载cas-server,运行起来。
步骤大概这样:
1. 运行cas-server服务
2. 让cas-server通过jdbc进行认证
3. 修改cas-server的登录页面
4. 让业务系统与cas-client集成


使用CAS实现SSO简洁教程

单点登录的原理是通过拦截你设定的URL,并跳转到你指定的CAS SERVER登录页,当你登录成功后,带着TICKET,返回到你打开的URL。然后你就可以一票在手,畅通无阻。


CAS 官网

对应github地址:

java SSO 之Cas 笔记

说明:cas - server :4.0.0版本 已经 以前的 3.x 版本直接提供的有 

java SSO 之Cas 笔记

但是4之后还有5开始不提供war包,要自己用官网的工具打成war包;(maven和gradle)都支持,两个工具


cas 5.x 开始使用spring boot 和之前完全不一样。


学习资料-Apereo CAS 5.0

java SSO 之Cas 笔记


CAS 学习值慕课网学习  SSO CAS单点系列


5.x CAS 默认密码:casuser
application.properties  中的 cas.authn.accept.users=casuser::Mellon




相关学习:spring security 配合 cas ;  shiro 配合cas;



java SSO 之Cas 笔记





java SSO 之Cas 笔记




java SSO 之Cas 笔记




4.x一下的常见配置: deployerConfigContext.xml;   spring-configuration/ticketGrantingTicketCookieGenerator.xml
java SSO 之Cas 笔记
java SSO 之Cas 笔记



报错:未能够识别出目标 'ST-11-b5ol1MCscnxEXXrNxTgp-cas01.example.org'票根 

票据已经失效 解决CAS客户端验证ST票据时发生的TicketValidationException问题


请求登陆;验证票据;登录成功;

登陆client,302重定向到serve

http://xx.com:82/cas/login?service=http://xx.com:82/safety/shiro-cas

http://xx.com:82/safety/shiro-cas?ticket=ST-12-FE3tWTyKbvkqda3V4MIq-cas01.example.org

http://www.xxx.com:82/cas/serviceValidate?ticket=ST-14-ncH011jbmpoTb5eqfC6f-cas01.example.org&service=http%3A%2F%2Flocalhost%3A8888%2Foa%2Fj_spring_cas_security_check

状态码302标示资源被重定向到新的地址:



CAS系列课程

java SSO 之Cas 笔记



自己遇到的坑,cas client 和 cas 服务器都配置好了,但是 不同系统之间还是不能同时登录和退出,结果,错误原因是:

http://www.baidu.com 和 http://baidu.com 是不一样的;


cas 3.0/4.0学习:

1:默认账户密码 cas/cas ,账号和密码相同,处理类SimpleTestUsernamePasswordAuthenticationHandler

2:

<!--dazer 段大志 去掉原始的验证登录的处理器-->
	<bean
	class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />

    <!--dazer start -->
    <bean id="testAuthenticationHandler" class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler"/>
    <bean id="databaseAuthenticationHandler" class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
        <property name="dataSource" ref="dataSource"/>
        <property name="sql" value="select ac.password from account_info ai,account_credential ac where ai.username=? and ai.id=ac.account_id"/>
        <property name="passwordEncoder" ref="md5PasswordEncoder"/>
    </bean>
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName"><value>oracle.jdbc.OracleDriver</value></property>
        <property name="url"><value>jdbc:oracle:thin:@121.196.194.52:1521:orcl</value></property>
        <property name="username"><value>CBL_OA</value></property>
        <property name="password"><value>W1Q2W3E4R5T88cbl</value></property>
    </bean>
    <bean id="md5PasswordEncoder" class="demo.CustomPasswordEncoder"/>
    <!--dazer end -->
详细见截图:

java SSO 之Cas 笔记

基于CAS实现单点登录(SSO):登录成功后,cas client如何返回更多用户信息



http://blog.csdn.net/matthewei6/article/details/50709252单点登录cas常见问题系列汇总 - 持续更新

java SSO 之Cas 笔记


CAS—注销登录后跳转到登录页