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

背景

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

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

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

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

简介

​ 我们的统一身份认证建设后势必会给第三方应用提供相关的认证对接,这时我们就需要对于应用进行授权管理,在CAS中该项是以服务形式进行使用,下面我们就开始对于CAS进行配置服务存储逻辑,本次存储采用的方式是JSON的方式,后续我们再进行JPA尝试。

​ 上一节我们搭建了一个cas client,本章节我们就基于上一节的客户端在其服务端中增加服务注册配置,使其不再提示下图这种无权限的错误。

image-20210727170411130

环境

主要使用的环境如下

服务器系统:windows 10

环境:OpenJDK 11

web中间件:tomcat9

CAS Server:6.3.x

数据库:MariaDB 或 PostgreSQL

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

谷歌CAS社区邮件列表

正文

1、修改配置文件application-dev.properties,增加服务配置

# 启动服务注册设置 JSON格式
cas.service-registry.init-from-json=true
# 服务注册表存储目录
cas.service-registry.json.location=classpath:/services

2、修改build.gradle文件,在dependencies中增加一个json包。

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

注:在我编写本篇教程时发现官方的覆盖模板文件再次迭代,因此我进行了项目升级,因此我们这里使用org.apereo.cas下的包时不需要后面追加版本号了,当你进行使用时一定要观察当前你使用版本的写法,以免造成一些包没有有效引用进来。

3、在src/main/resourcess/services目录下创建一个json文件,这里我使用的文件名称为:Test-10000002.json

官方文件提到该文件的名称是由name-id组成,因此只要符合该规则即可。

其内容如下:

{
  "@class": "org.apereo.cas.services.RegexRegisteredService",
  "serviceId": "^(https|http|imaps)://.*",
  "name": "Test",
  "id": 10000002,
  "description": "这是一个测试授权的地址配置",
  "accessStrategy" : {
    "@class" : "org.apereo.cas.services.RemoteEndpointServiceAccessStrategy",
    "endpointUrl" : "http://localhost:8080",
    "acceptableResponseCodes" : "200,202"
  }
}

4、启动CAS Server服务,并启动上一节我们创建的CAS 客户端,进行访问客户端地址

image-20210729165230426

显示如上页面,表示着我们已经成功在服务中注册了我们的新CAS客户端。

下一节,我们将配置服务存储至mariaDB中。

本文声明:


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