搭建CAS 5.x对接iServer

IServer9D是支持CAS 5.x实现单点登录的,只是CAS 5.x相较于CAS 3.x有个很大变化,部署方式也很不一样,由于没有官方推出的5.x发行版,用户需要手动构建war包。CAS的服务端搭建有两种常用的方式:1、基于源码的基础上构建出来的;2、使用WAR overlay的方式来安装。官方推荐使用第二种,配置管理方便,以后升级也容易。本文就是使用第二种方式。

1、安装GIT
自行到 https://www.git-scm.com/download/ 下载后安装。

2、创建CAS工作目录

mkdir d:\casoverlay
cd d:\casoverlay
d:

3、下载CAS Overlay
执行命令:git clone -b 5.3 https://github.com/apereo/cas-overlay-template.git
此时,d:\casoverlay\ 下有个 cas-overlay-template 目录。
为了实现iServer单点登录的对接,我们需要增加些依赖。找到cas-overlay-template目录下的pom.xml文件,增加如下依赖:
(1) 对接iServer时,需要把CAS的用户信息存储在数据库中。以MySQL数据库为例
① 先在数据库中创建表和帐号数据。

DROP TABLE IF EXISTS ‘app_user’;  
CREATE TABLE ‘cas_user_base’ (  
  ‘id’ INT(11) NOT NULL AUTO_INCREMENT,  
  ‘username’ VARCHAR(45) DEFAULT NULL,  
  ‘password’ VARCHAR(45) DEFAULT NULL, 
  ‘role’ VARCHAR(45) DEFAULT NULL,   
  PRIMARY KEY (‘id’)  
);  
INSERT INTO ‘app_user’ VALUES (1,'cas','1234567','admin');

② 添加数据库的JDBC插件,在pom.xml增加如下依赖。

<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>

③ 在iServer和CAS之间是遵循SAML1.1协议来实现票证验证响应的,因此cas需包含以下依赖来实现启用对SAML1.1的支持。

<dependency>
  <groupId>org.apereo.cas</groupId>
  <artifactId>cas-server-support-saml</artifactId>
  <version>${cas.version}</version>
</dependency>

④ Cas是以JSON的格式注册服务,因此需要包含Json依赖包来实现对JSON的支持。

 <dependency>
      <groupId>org.apereo.cas</groupId>
      <artifactId>cas-server-support-json-service-registry</artifactId>
      <version>${cas.version}</version>
</dependency>

⑤ iServer与CAS之间实现票证验证响应时,需要获取代表角色的字段(即前面表里的role字段)来验证拥有什么类型的权限,因此需要增加属性返回依赖包。

<dependency>
      <groupId>org.apereo.cas</groupId>
      <artifactId>cas-server-core-authentication-attributes</artifactId>
      <version>${cas.version}</version>
</dependency>

(2) 至此,iServer对接CAS需用到的依赖已添加完毕。接着使用mvn package命令打包。
(3) 打包结束后,把打包生成的cas目录复制到tomcat的webapps目录中 。
(4) 暂时先别启动tomcat,还需要修改配置文件。
① 打开\WEB-INF\classes\services目录下的HTTPSandIMAPS-10000001.json文件,如下:
在这里插入图片描述
ServiceId参数可见,当前cas只支持https和imaps2个协议,需增加http协议。如下:
在这里插入图片描述
② 接着,增加注册服务的配置,如下:
在这里插入图片描述
③ 增加返回所有的相关属性的配置,如下:
在这里插入图片描述
至此,HTTPSandIMAPS-10000001.json配置完成。
(5) 接着配置数据库连接等参数。
① 在\cas\WEB-INF\classes目录下新建application.properties文件,增加配置项,开启json注册服务,如下:
在这里插入图片描述
② 增加配置项,设置服务注册配置文件位置,如下:
在这里插入图片描述
③ 增加配置项,增加数据库配置,将用于CAS服务器的登录,如不配置,将没办法使用MySQL中的用户名密码登录CAS服务器,如下:
在这里插入图片描述
④ 增加配置项,增加单行属性配置,将用于CAS服务器票证验证时返回给客户端的字段,如不配置,将没法获取数据表中其他字段,比如,前文中的role字段。如下:
在这里插入图片描述
注意:
a. cas.authn.attributeRepository.jdbc[0].attributes参数只是查询结果的映射关系,需与实践表结构为准,此处的表结构就是username、password和role三个字段。
b. cas.authn.attributeRepository.jdbc[0].sql参数只是cas查询数据库时使用到的SQL语句,自由性很大,只要是正确的查询语句都是可以的。比如数据库中是以2个关联表的形式存储数据时,sql语句可以这么写:

SELECT app_user.*,gl1.* FROM app_user,gl1 WHERE app_user.test = gl1.test and {0}

其中,app_user.表和gl1表是以test字段关联起来的。
⑤ 完整的application.properties如下:

#开启json注册服务
cas.serviceRegistry.initFromJson=true
#设置服务注册配置文件位置
cas.serviceRegistry.json.location=classpath:/services
#JDBC配置
#数据库连接
cas.authn.jdbc.query[0].url=jdbc:mysql://localhost:3306/localmysql?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&serverTimezone=UTC
#数据库dialect配置
cas.authn.jdbc.query[0].dialect=org.hibernate.dialect.MySQLDialect
#数据库用户名
cas.authn.jdbc.query[0].user=root
#数据库用户密码
cas.authn.jdbc.query[0].password=123456
#数据库事务自动提交
cas.authn.jdbc.query[0].autocommit=false
#数据库驱动
cas.authn.jdbc.query[0].driverClass=com.mysql.jdbc.Driver
#超时配置
cas.authn.jdbc.query[0].idleTimeout=5000
#查询账号密码SQL,必须包含密码字段
cas.authn.jdbc.query[0].sql=select * from app_user where username=?
#指定上面的SQL查询字段名(必须)
cas.authn.jdbc.query[0].fieldPassword=password
#单行属性
#开启单行属性
cas.authn.attributeRepository.jdbc[0].singleRow=true
#设置数据库表和cas服务器之间查询结果的映射关系,具体与数据库的字段名为准
cas.authn.attributeRepository.jdbc[0].attributes.username=username
cas.authn.attributeRepository.jdbc[0].attributes.password=password
cas.authn.attributeRepository.jdbc[0].attributes.role=role
cas.authn.attributeRepository.jdbc[0].order=0
#返回所有属性
cas.authn.attributeRepository.jdbc[0].requireAllAttributes=true
#查询所有属性字段的SQL语句
cas.authn.attributeRepository.jdbc[0].sql=SELECT * FROM app_user WHERE {0}
#指定上面的SQL查询条件
cas.authn.attributeRepository.jdbc[0].username=username
#数据库连接
cas.authn.attributeRepository.jdbc[0].url=jdbc:mysql://localhost:3306/localmysql?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&serverTimezone=UTC
#数据库dialect配置
cas.authn.attributeRepository.jdbc[0].dialect=org.hibernate.dialect.MySQLDialect
#数据库用户名
cas.authn.attributeRepository.jdbc[0].user=root
#数据库用户密码
cas.authn.attributeRepository.jdbc[0].password=123456
#数据库事务自动提交
cas.authn.attributeRepository.jdbc[0].autocommit=false
#数据库驱动
cas.authn.attributeRepository.jdbc[0].driverClass=com.mysql.jdbc.Driver
#超时配置
cas.authn.attributeRepository.jdbc[0].idleTimeout=5000

4、至此。CAS 5.x配置完成,启动tomcat,在iServer中设置CAS配置即可,如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值