SSO统一身份认证——CAS Server6.3.x服务存储JPA(十一)

背景

单点登录(SingleSignOn,SSO),就是通过用户的一次性鉴别登录。当用户在身份认证服务器上登录一次以后,即可获得访问单点登录系统中其他关联系统和应用软件的权限,同时这种实现是不需要管理员对用户的登录状态或其他信息进行修改的,这意味着在多个应用系统中,用户只需一次登录就可以访问所有相互信任的应用系统。这种方式减少了由登录产生的时间消耗,辅助了用户管理,是目前比较流行的。

单点登录的使用场景有很多,C/S、B/S架构的系统均可使用,通常是支持快速配置使用。

业内目前实现SSO的方式有很多种,在ToC场景下互联网公司通常使用的是OAuth2协议,而ToB场景下大家通常是囊括百家,既支持OAuth2又支持CAS,还滴支持LDAP。其造成的原因主要是因为在ToB场景下需要对接SSO的系统通常仅支持某个协议,而这类系统又不是同一个协议导致。

而我当前境况下就是既有ToC场景又有ToB场景,在该种情况下,我开始对其业内的各种协议进行整合集成,这一系列文章将对其业内各个协议从基础到深入、从搭建到二次开发进行记录,同时将其整理出来分享给大家。

简介

上一节我们将CAS客服端注册到了服务中,使用的JSON配置的方式,而日常时我们更多的使用数据库或者LDAP,本节我们将使用JPA实现CAS Server启动时将原有JSON配置自动初始至MariaDB中。

环境

主要使用的环境如下

服务器系统:windows 10

环境:OpenJDK 11

web中间件:tomcat9

CAS Server:6.3.x

数据库:MariaDB 或 PostgreSQL

官方文献:https://apereo.github.io/cas/6.3.x/services/JPA-Service-Management.html

快速软件包openjdk11+tomcat9+CASServer.tar

谷歌CAS社区邮件列表

正文

1、修改build.gradle文件,在dependencies中增加一个jpa的jar包。并将上一节加入的json注册依赖的jar包注释掉。

   // 添加服务注册依赖JSON
    // implementation "org.apereo.cas:cas-server-support-json-service-registry"
    // 添加服务器注册依赖JPA
    implementation "org.apereo.cas:cas-server-support-jpa-service-registry"

注:如果没有进行引入org.apereo.cas:cas-server-support-jdbc-drivers,也需要进行引入。以便于有效找到驱动

2、在application-dev.properties中加入需要的配置,可参考官方文档。原有使用的JSON配置保留,用于启动时初始json,这时服务将会根据json初始到jpa中。

##
# 服务注册
#
cas.service-registry.jpa.url=jdbc:mariadb://127.0.0.1:3306/business?characterEncoding=UTF-8&application-name=cas
cas.service-registry.jpa.user=root
cas.service-registry.jpa.password=123456
cas.service-registry.jpa.driver-class=org.mariadb.jdbc.Driver
cas.service-registry.jpa.dialect=org.hibernate.dialect.MariaDB103Dialect

注:cas.service-registry.jpa.dialect方言配置的相关值需要根据官方文档和其实际使用的数据库版本进行配置。

3、进行编译并启动,启动成功后观察数据库

E:\IdeaProjects\sso-cas-server>gradlew.bat clean build

image-20210729171329839

数据库中多出来了四张表,这时表明我们的json已经初始到数据库了,再次启动CAS客户端,访问http://localhost:8080/显示为如下所示:

image-20210729171452020

至此我们就完成了服务使用JPA的功能。

下一节,我们将对于CAS Server6.3.x版本进行继续研究,本篇发布时发现官方模板已经有v6.4.x版本了,有兴趣的可以先尝试一下。后续我们对于版本升级再做相关讲解。

本文声明:


知识共享许可协议
本作品由 cn華少 采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。