1.1. 什么是SSO?

单点登录( Single Sign-On , 简称 SSO )是目前比较盛行的做事于企业业务整合的办理方案之一, SSO 使得在多个运用系统中,用户只须要 登录一次 就可以访问所有相互信赖的运用系统。

1.2. 什么是CAS?

phpssoSSO的单点登录技巧CAS Webpack

随着SSO技能的盛行,干系产品也比较多,个中CAS便是一套办理方案,CAS(Central Authentication Service)中文翻译为统一身份认证做事或中心身份做事,它由做事端和客户端组成,实现SSO,并且随意马虎进行企业运用的集成。

CAS是Yale大学(耶鲁)发起的一个开源项目,旨在为web运用系统供应一种可靠的单点登录方法,CAS在2004年12月正式成为JA-SIG的一个项目。

官网:https://www.apereo.org/projects/cas

CAS具有以下的特点:

【1】 开源的企业级单点登录办理方案

【2】 CAS Server为须要独立支配的web运用

【3】 CAS Client支持非常多的客户端(这里指单点登录系统中的各个web运用),包括 Java 、 .Net 、 ISAPI 、 Php 、 Perl 、 uPortal 、 Acegi 、 Ruby 、 VBScript 等客户端

有了CAS,我们的系统架构就演化成下面这样的:

从架构上可以看出,CAS包含两个部分:CAS Server和CAS Client.

CAS Server须要独立支配,紧张卖力对用户的认证事情,CAS Client卖力处理

对客户端受保护资源的访问要求,须要登录,重定向到CAS Server。

下面,我们一步步搭建CAS实现SSO.

1.3. 开拓环境哀求

Jdk1.8+ maven3.6 idea tomcat9.0+ windows10

2. CAS Server做事器端

2.1. CAS做事器端软件包下载

下载版本为5.3

下载做事器的overlay地址:

https://github.com/apereo/cas-overlay-template/tree/5.3

压缩包:cas-overlay-template-5.3.zip

解压好后用命令:build.cmd package

然后用编译的目录查看war包:

2.2. 做事器真个基本支配和测试

将war包放到tomcat的webapp中,然后启动tomcat

访问地址:http://localhost:8080/cas 或者 http://localhost:8080/cas/login

默认用户名和密码在\webapps\cas\WEB-INF\classes\application.properties里面

用户名:casuser 密码:Mellon

CAS做事端启动成功

2.3. CAS Server做事器配置

2.3.1 去除https认证

CAS默认利用的是HTTPS协议,如果利用HTTPS协议须要SSL安全证书(需向特定的机构申请和购买)。
如果对安全哀求不高或是在开拓测试阶段,可利用HTTP协议。
我们这里讲解通过修正配置,让CAS利用HTTP协议。

修正CAS做事端配置文件:

\cas\WEB-INF\classes\ application.properties里添加如下内容:

cas.tgc.secure=false

cas.serviceRegistry.initFromJson=true

\cas\WEB-INF\classes\services目录下的

HTTPSandIMAPS-10000001.json修正内容如下:

修正内容如下,即添加http

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

3. CAS Client客户端配置(自己项目)

n Pom文件的依赖即pom.xml

<dependency>

<groupId>net.unicon.cas</groupId>

<artifactId>cas-client-autoconfig-support</artifactId>

<version>2.1.0-GA</version>

</dependency>

n 客户端1

application.yml配置文件

客户端1

server:

port: 9010

cas:

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

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

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

validation-type: cas3

注:启动类追加开启CAS的表明@EnableCasClient

项目中新建一个测试类

iimport io.swagger.annotations.Api;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController; @RestController@Api(description = "SSO-CAS的测试") public class TestController { @GetMapping("/test1") public String test1(){ return "test1...."; }}

n 客户端2

server:

port: 9011

cas:

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

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

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

validation-type: cas3

注:启动类追加开启CAS的表明@EnableCasClient

项目中新建一个测试类

import io.swagger.annotations.Api;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController; @RestController@Api(description = "SSO-CAS的测试") public class TestController { @GetMapping("/test2") public String test1(){ return "test2...."; }}

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

1. 首先启动tomcat做事器中的CAS Server。

2. 分别启动客户端1和客户端2,然后在浏览器地址栏输入客户端1的地址

http://localhost:9010/test1

在不登录的状态,在浏览器的地址栏连续输入客户端2的地址:

http://localhost:9011/test2

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

我们再次在浏览器窗口重新输入客户端1,http://localhost:9010/test1,或者在刚刚输入客户端页面重新刷新,不用登录即可进入页面,如下图:

以上便是单点登录的测试。