springboot整个cas_CAS5.3服务器搭建及SpringBoot整合CAS实现单点登录

1.1 什么是单点登录

单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

我们目前的系统存在诸多子系统,而这些子系统是分别部署在不同的服务器中,那么使用传统方式的session是无法解决的,我们需要使用相关的单点登录技术来解决。

1.2 什么是CAS

CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目。CAS 具有以下特点:

【1】开源的企业级单点登录解决方案。

【2】CAS Server 为需要独立部署的 Web 应用。

【3】CAS Client 支持非常多的客户端(这里指单点登录系统中的各个 Web 应用),包括 Java, .Net, PHP, Perl, Apache, uPortal, Ruby 等。

从结构上看,CAS 包含两个部分: CAS Server 和 CAS Client。CAS Server 需要独立部署,主要负责对用户的认证工作;CAS Client 负责处理对客户端受保护资源的访问请求,需要登录时,重定向到 CAS Server。下图是 CAS 最基本的协议过程:

从结构上看,CAS 包含两个部分: CAS Server 和 CAS Client。CAS Server 需要独立部署,主要负责对用户的认证工作;CAS Client 负责处理对客户端受保护资源的访问请求,需要登录时,重定向到 CAS Server

SSO单点登录访问流程主要有以下步骤:

1. 访问服务:SSO客户端发送请求访问应用系统提供的服务资源。

2. 定向认证:SSO客户端会重定向用户请求到SSO服务器。

3. 用户认证:用户身份认证。

4. 发放票据:SSO服务器会产生一个随机的Service Ticket。

5. 验证票据:SSO服务器验证票据Service Ticket的合法性,验证通过后,允许客户端访问服务。

6. 传输用户信息:SSO服务器验证票据通过后,传输用户认证结果信息给客户端。

1.3 CAS服务端部署

1.template下载

下载CAS 模板 Overlay Template,我这里使用 Apereo CAS 5.3.x 版本,JDK需要1.8+

1. 解压下载的zip压缩包

2. 解压后使用maven命令打包

mvn package

3. 把target下生成的war包重命名为cas.war放到tomcat下

4. 启动tomcat

5. 找到解压的文件

由于CAS默认使用的是基于https协议,需要改为兼容使用http协议

到D:\software\apache-tomcat-8.5.43\webapps\cas\WEB-INF\classes(这是我的目录,去你对应目录下找,不要找错啊,实在不行用everything搜索吧)目录的application,properties添加如下的内容

cas.tgc.secure=falsecas.serviceRegistry.initFromJson=true

到D:\software\apache-tomcat-8.5.43\webapps\cas\WEB-INF\classes\services目录下的HTTPSandIMAPS-10000001.json

修改内容如下,即添加http

"serviceId" : "^(https|http|imaps)://.*",

兼容http修改完毕,由于https协议默认使用的端口为8443,我们修改为tomcat的8080端口

到D:\software\apache-tomcat-8.5.43\webapps\cas\WEB-INF\classes目录的application,properties添加如下的内容

server.port=8080

由于默认的用户名和密码为casuser::Mellon不好记忆,

修改用户名和密码(根据需要修改成自己想要的)

到D:\software\apache-tomcat-8.5.43\webapps\cas\WEB-INF\classes目录的application,properties的最后面修改密码为如下

cas.authn.accept.users=yyh::123456

即可跳转到cas服务登录界面,如下图:

输入账号和密码,即可登入,如下图:

1.4 客户端搭建

接下来搭建springboot项目的客户端1

在新建的springboot项目的pom.xml添加如下依赖(匹配对应的版本)

net.unicon.cas

cas-client-autoconfig-support

2.1.0-GA

在resources下新建application.properties(或者application.yml)

server.port=8088#cas服务端的地址

cas.server-url-prefix=http://localhost:8080/cas

#cas服务端的登录地址

cas.server-login-url=http://localhost:8080/cas/login

#当前服务器的地址(客户端)

cas.client-host-url=http://localhost:8088

#Ticket校验器使用Cas30ProxyReceivingTicketValidationFilter

cas.validation-type=cas3

如果新建的是application.yml

server:

port: 8088

cas:

server-url-prefix: http://localhost:8080/cas

server-login-url: http://localhost:8080/cas/login

client-host-url: http://localhost:8088

validation-type: cas3

在java下新建一个com.learn包,在包下新建一个Application 类,代码如下:

importnet.unicon.cas.client.configuration.EnableCasClient;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;

#启动CAS @EnableCasClient

@EnableCasClient

@SpringBootApplicationpublic classApplication {public static voidmain(String[] args) {

SpringApplication.run(Application.class, args);

}

}

在新建一个测试类CasTest1,代码如下:

importorg.springframework.boot.autoconfigure.EnableAutoConfiguration;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RestController;

@RestController

@EnableAutoConfigurationpublic classCasTest1 {

@RequestMapping("/test1")publicString test1(){return "test1....";

}

}

接下来搭建springboot项目的客户端2

方式同理,不同的是在resources下新建application.properties(或者application.yml)的server.port的端口号进行修改,如下:

server.port=8090#cas服务端的地址

cas.server-url-prefix=http://localhost:8080/cas

#cas服务端的登录地址

cas.server-login-url=http://localhost:8080/cas/login

#当前服务器的地址(客户端)

cas.client-host-url=http://localhost:8090

#Ticket校验器使用Cas30ProxyReceivingTicketValidationFilter

cas.validation-type=cas3

客户端1,客户端2和cas服务器搭建好之后,接下来我们进行测试:

1. 首先启动上面步骤中放置了cas的tomca服务器,进入D:\software\apache-tomcat-8.5.43\bin目录下,找到startup.bat,双击,即可启动。

即跳转到cas登录验证界面,如下图:

在不登录的情况下,在浏览器另一窗口输入客户端2,即在浏览器中输入http://localhost:8090/test2

同样,进入到了cas登录验证界面,如下图:

当我们在其中一个登录界面登录账号后(假设登录客户端2)就会跳转到登陆后的界面,如下图:

我们再次在浏览器窗口重新输入客户端1,http://localhost:8088/test1,或者在刚刚输入客户端页面重新刷新

不用登录即可进入页面,如下图:

至此,整个单点登录的测试就结束。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Cas 5.3 pac4j是一个用于身份验证和授权的Java库。它提供了一种简单且可扩展的方式来集成CAS(Central Authentication Service)协议和pac4j库,用于集中身份验证。CAS是一种单点登录协议,它允许用户在一次登录后访问多个应用程序而无需再次登录。pac4j是一个Java库,用于实现身份验证和授权的安全框架。 使用Cas 5.3 pac4j,开发人员可以轻松地实现CAS协议和pac4j库的集成,并集中管理用户的身份验证和授权。它提供了多种身份验证方法,包括用户名密码,OAuth,OpenID等。开发人员只需配置相应的身份验证器即可使用这些方法。 该库还提供了丰富的授权机制,允许开发人员定义访问控制规则,以决定哪些用户可以访问特定资源。这些规则可以基于用户角色,用户组,IP地址等进行配置,并通过简单的配置文件进行管理。 Cas 5.3 pac4j还支持自定义的身份验证器和授权器,使开发人员可以根据自己的需要进行扩展和定制。此外,它还提供了易于使用的API,方便开发人员在应用程序中使用身份验证和授权功能。 总之,Cas 5.3 pac4j提供了一个强大而灵活的身份验证和授权解决方案,帮助开发人员快速集成CAS协议和pac4j库,并集中管理用户的身份验证和授权。 ### 回答2: Cas 5.3是一个开源的单点登录(SSO)协议,用于统一认证和授权系统。Pac4j是一个在Cas 5.3上构建的Java安全库。 Cas是“Central Authentication Service”的缩写,主要用于企业或组织中的应用程序和服务之间的身份验证问题。Cas 5.3Cas协议的一个版本,它提供了多种身份验证方式,包括用户名/密码、第三方账号、Token和验证码等。它的核心原理是通过一个中央认证服务器来验证用户的身份,并将认证结果传递给各个应用程序,实现了用户在一个应用中登录后,其身份在其他应用中的自动认证。 Pac4j是一个开源的Java安全库,它在Cas 5.3上提供了更强大和灵活的安全功能。Pac4j可以集成多种身份验证方式,包括Cas、OAuth、SAML、OpenID Connect、LDAP和JWT等,并能够与各种框架(如Spring、Play、Vert.x)无缝集成。Pac4j还支持身份授权和权限管理,可以根据用户的角色和权限对资源进行访问控制。 Cas 5.3和Pac4j的结合可以实现一个健全的身份认证和授权体系。它们可以应用于各种场景,如企业内部应用的统一登录、多租户系统的身份管理和第三方应用的认证授权等。通过使用Cas 5.3和Pac4j,可以大大简化安全开发的复杂性,提高系统的安全性和用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值