单点登录服务端搭建

1、下载cas包

https://github.com/apereo/cas-overlay-template/tree/5.3

这好像是最后一个maven版本的,之后都是grade版本的

2、使用idea打开代码,导入依赖

3、新建src目录、resource目录

4、复制cas-server-webapp-tomcat下的services、applicaiton.properties目录到resources目录下

5、修改resources/services/HTTPSandIMAPS-10000001.json文件,添加如下内容,支持http访问

6、添加数据库依赖

    org.apereo.cas    cas-server-support-jdbc    ${cas.version}    org.apereo.cas    cas-server-support-jdbc-drivers    ${cas.version}    mysql    mysql-connector-java    8.0.29

7、修改applicaiton.properties配置

### 普通MD5用户jdbc验证###配置数据库连接cas.authn.jdbc.query[0].driverClass=com.mysql.cj.jdbc.Drivercas.authn.jdbc.query[0].url=jdbc:mysql://localhost:3306/leecx?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=falsecas.authn.jdbc.query[0].user=rootcas.authn.jdbc.query[0].password=root#添加jdbc认证cas.authn.jdbc.query[0].sql=SELECT * FROM sys_user WHERE USER_NAME = ?#哪个字段作为密码字段cas.authn.jdbc.query[0].fieldPassword=PASSWORD#哪个字段作为过期字段 0:未过期  1:已过期cas.authn.jdbc.query[0].fieldExpired=EXPIRED#哪个字段作为是否可用字段 0:未禁用  1:已禁用cas.authn.jdbc.query[0].fieldDisabled=STATUS#MD5设置cas.authn.jdbc.query[0].passwordEncoder.type=DEFAULTcas.authn.jdbc.query[0].passwordEncoder.characterEncoding=UTF-8cas.authn.jdbc.query[0].passwordEncoder.encodingAlgorithm=MD5

8、配置tomcat

9、启动项目,访问http://localhost:8080/cas_overlay_war_exploded/login

10、自定义页面

复制cas-server-webapp-tomcat下的templates到resources下,不要修改文件名称

页面使用thymeleaf模板语法,可参考链接里的第一个链接

cas客户端搭建

1、建立一个springboot项目

2、引入依赖

    org.jasig.cas.client    cas-client-support-springboot    3.6.4

3、在启动类上添加@EnableCasClient注解

4、修改application.properties

server.port=8082cas.server-url-prefix=http://localhost:8080/cas_overlay_war_explodedcas.server-login-url=${cas.server-url-prefix}/logincas.client-host-url=http://localhost:${server.port}cas.validation-type=cas3cas.single-logout.enabled=true

5、写个测试代码测试一下

@Controllerpublic class TestController {    @Autowired    CasClientConfigurationProperties casProps;    @ResponseBody    @RequestMapping("/sso-test1")    public String test1(HttpSession session) {        Assertion assertion = (Assertion) session.getAttribute(AbstractCasFilter.CONST_CAS_ASSERTION);        AttributePrincipal principal = assertion.getPrincipal();        String loginName = principal.getName();        return "sso-test1,当前登录账户" + loginName;    }    /**     * 退出 后自动重定向自定义接口     */    @RequestMapping("/system/logout1")    public String logout1(HttpServletRequest request) {        HttpSession session = request.getSession();        session.invalidate();        return "redirect:" + casProps.getServerUrlPrefix() + "/logout?service="+ casProps.getClientHostUrl()+"/system/logoutSuccess";    }    /**     * 退出成功页     */    @RequestMapping("/system/logoutSuccess")    @ResponseBody    public String logoutSuccess() {        return "test2成功退出!";    }}

6、访问http://localhost:8082/sso-test1

会跳转到cas登录页,登录成功后成功访问

参考链接:

https://www.cnblogs.com/hooly/p/12784397.html

https://www.cnblogs.com/kgdxpr/p/9933106.html

https://blog.csdn.net/bigdata_dog/article/details/123896404