熊熊出没 发表于 2023-9-4 17:01:30

cas服务端、客户端搭建

单点登录服务端搭建

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目录下
https://img2023.cnblogs.com/blog/2029161/202309/2029161-20230904163329419-1017683240.png
5、修改resources/services/HTTPSandIMAPS-10000001.json文件,添加如下内容,支持http访问
https://img2023.cnblogs.com/blog/2029161/202309/2029161-20230904163345393-1195352094.png
6、添加数据库依赖
<dependency>
    <groupId>org.apereo.cas</groupId>
    <artifactId>cas-server-support-jdbc</artifactId>
    <version>${cas.version}</version>
</dependency>
<dependency>
    <groupId>org.apereo.cas</groupId>
    <artifactId>cas-server-support-jdbc-drivers</artifactId>
    <version>${cas.version}</version>
</dependency>

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.29</version>
</dependency>7、修改applicaiton.properties配置
##
# 普通MD5用户jdbc验证
##
#配置数据库连接
cas.authn.jdbc.query.driverClass=com.mysql.cj.jdbc.Driver
cas.authn.jdbc.query.url=jdbc:mysql://localhost:3306/leecx?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false
cas.authn.jdbc.query.user=root
cas.authn.jdbc.query.password=root
#添加jdbc认证
cas.authn.jdbc.query.sql=SELECT * FROM sys_user WHERE USER_NAME = ?
#哪个字段作为密码字段
cas.authn.jdbc.query.fieldPassword=PASSWORD
#哪个字段作为过期字段 0:未过期1:已过期
cas.authn.jdbc.query.fieldExpired=EXPIRED
#哪个字段作为是否可用字段 0:未禁用1:已禁用
cas.authn.jdbc.query.fieldDisabled=STATUS
#MD5设置
cas.authn.jdbc.query.passwordEncoder.type=DEFAULT
cas.authn.jdbc.query.passwordEncoder.characterEncoding=UTF-8
cas.authn.jdbc.query.passwordEncoder.encodingAlgorithm=MD58、配置tomcat
https://img2023.cnblogs.com/blog/2029161/202309/2029161-20230904163400218-474141804.png
https://img2023.cnblogs.com/blog/2029161/202309/2029161-20230904164015525-1062692212.png
9、启动项目,访问http://localhost:8080/cas_overlay_war_exploded/login
https://img2023.cnblogs.com/blog/2029161/202309/2029161-20230904163457030-2119158107.png
10、自定义页面
复制cas-server-webapp-tomcat下的templates到resources下,不要修改文件名称
页面使用thymeleaf模板语法,可参考链接里的第一个链接
https://img2023.cnblogs.com/blog/2029161/202309/2029161-20230904163513774-1953047320.png
cas客户端搭建

1、建立一个springboot项目
2、引入依赖
<dependency>
    <groupId>org.jasig.cas.client</groupId>
    <artifactId>cas-client-support-springboot</artifactId>
    <version>3.6.4</version>
</dependency>3、在启动类上添加@EnableCasClient注解
4、修改application.properties
server.port=8082

cas.server-url-prefix=http://localhost:8080/cas_overlay_war_exploded
cas.server-login-url=${cas.server-url-prefix}/login
cas.client-host-url=http://localhost:${server.port}
cas.validation-type=cas3
cas.single-logout.enabled=true5、写个测试代码测试一下
@Controller
public 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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: cas服务端、客户端搭建