cas客户端搭建
文章目录
一、概要
基于cas服务器搭建完成后,本篇开始介绍cas客户端的搭建,目的是完成访问客户端信息,客户端能够跳转到cas服务端的登录页面,用户授权成功后,能够跳回访问客户端的链接。
关于cas服务器搭建,请参考cas服务搭建
二、框架选用
本次搭建的cas客户端,是基于springboot框架为基础,集成spring-security以及spring-security-cas框架进行搭建。
sprng-security-cas是官方提供的一个包,支持了cas客户端的相关功能。关于spring-security-cas文档说明,可以参考spring-secyrity-cas官方文档
三、搭建
spring-security-cas是基于spring security框架下的一个拓展,因此需要对spring-security有一定的认识。本教程搭建不对spring-boot项目搭建流程进行说明。下面开始搭建cas client吧。
1.引入依赖
基于springboot项目下的pom.xml文件,添加以下依赖:
<properties>
<org.jasig.cas.client.version>3.6.2</org.jasig.cas.client.version>
</properties>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-cas</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.jasig.cas.client</groupId>
<artifactId>cas-client-support-saml</artifactId>
<version>${org.jasig.cas.client.version}</version>
</dependency>
2. 拓展配置文件
官方提供的配置文件类ServiceProperties仅支持以下参数:
参数 | 说明 |
---|---|
service | 用于进行登录后,cas服务端重定向回客户端的地址。 |
artifactParameter | 配置cas服务发送给客户端验证的参数,默认为ticket,如:https://server3.company.com/webapp/login/cas?ticket=ST-0-ER94xMJmn6pha35CQRoZ. |
serviceParameter | 配置cas客户端发送给cas服务端,服务端认证通过后,需要跳转的参数, 默认为service。也就是说,cas客户端会使用此参数加上以上的sevice,一起组装重定向到cas服务器的链接,如:https://my.company.com/cas/login?service=https%3A%2F%2Fserver3.company.com%2Fwebapp%2Flogin/cas. |
sendRenew | 指示是否应将renew参数发送到CAS登录URL和CAS验证URL。如果为true ,它将强制CAS再次对用户进行身份验证(即使用户先前已进行身份验证)。 在票证验证期间,将需要由于明确登录而生成票证。 高安全性应用程序可能会将其设置为true 。 默认为false ,提供自动单点登录。 |
基于ServiceProperties进行拓展,增加服务端url以及票据认证参数。如下:
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.cas.ServiceProperties;
import org.springframework.util.Assert;
import javax.validation.constraints.NotBlank;
/**
* cas 客户端配置文件。
* 继承{@link ServiceProperties},拓展cas 客户端的参数配置。
*
* @author Lvan
* @since 2020/12/10
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Configuration
@ConfigurationProperties(prefix = "cas", ignoreUnknownFields = false)
public class CasClientConfigurationProperties extends ServiceProperties {
/**
* CAS服务端的URL,如https://example.com/cas or https://cas.example,必填的字段。
*/
@NotBlank
private String serverUrlPrefix;
/**
* CAS服务端登录url, 如https://example.com/cas/login or https://cas.example/login,必填字段
*/
@NotBlank
private String serverLoginUrl;
/**
* CAS协议验证类型。如果未明确设置,则默认为CAS3。
*/
private ValidationType validationType = ValidationType.CAS3;
/**
* cas ticket验证类型。
*/
enum ValidationType {