CAS单点登录

1、CAS介绍

首先我们来说一下CAS,CAS全称为Central Authentication Service即中央认证服务,是一个企业多语言单点登录的解决方案,并努力去成为一个身份验证和授权需求的综合平台。
CAS是由Yale大学发起的一个企业级的、开源的项目,旨在为Web应用系统提供一种可靠的单点登录解决方法(属于 Web SSO )。
CAS协议至少涉及三方:客户端Web浏览器,请求身份验证的Web应用程序和CAS服务器。
它也可能涉及后端服务,如数据库服务器,它没有自己的HTTP接口,但与Web应用程序进行通信。
github地址:1、https://github.com/apereo/cas

2、原理

3、java实现方法

3.1、服务器端(http方式)

目前使用最多的的是apereo的cas-overdelay-template模板实现cas服务器端,地址为https://github.com/apereo/cas-overlay-template,其中的版本分为最新版master和6.0.x版本,这两种版本需要jdk11可以使用,并且使用gradle控制;建议使用5.3.x版本,其源码是由spring boot框架编写;4.2.x版本的源码是利用spring mvc编写,使用时可各取所需,本人使用5.3.x版本进行记录。
下载完成之后可直接对其打包,将其放入:(tomcat路径)\webapps下,启动tomcat即可。(若使用IDE测试,可以更改overlay的包)
在此之前需要更改部分配置:
由于CAS默认使用的是基于https协议,需要改善兼容性因此使用http协议
1、到apache-tomcat-9.0.13\webapps\cas\WEB-INF\classes目录的application,properties添加如下的内容

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

2、到apache-tomcat-9.0.13\webapps\cas\WEB-INF\classes\services目录下的HTTPSandIMAPS-10000001.json 修改内容如下,即添加http

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

3、兼容http修改完毕,由于https协议默认使用的端口为8443,我们修改为tomcat的8080端口 到apache-tomcat-9.0.13\webapps\cas\WEB-INF\classes目录的application,properties添加如下的内容

server.port=8080

4、由于使用的静态密码为casuser::Mellon不好记忆, 故而修改密码 到apache-tomcat-9.0.13\webapps\cas\WEB-INF\classes目录的application,properties的最后面修改密码为如下

cas.authn.accept.users=admin::admin//可选配置选项

5、至此,配置完成,浏览器打开项目出现如图,即可成功:

3.2、服务器端指定数据库

在pom文件中加入以下三个包:

    <!--数据库认证相关 start-->            <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><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql.driver.version}</version></dependency><!--数据库认证相关 end-->

在此处加入mysql.driver:

<properties><cas.version>5.3.9</cas.version><springboot.version>1.5.18.RELEASE</springboot.version><!-- app.server could be -jetty, -undertow, -tomcat, or blank if you plan to provide appserver --><app.server>-tomcat</app.server><mainClassName>org.springframework.boot.loader.WarLauncher</mainClassName><isExecutable>false</isExecutable><manifestFileToUse>${project.build.directory}/war/work/org.apereo.cas/cas-server-webapp${app.server}/META-INF/MANIFEST.MF</manifestFileToUse><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><mysql.driver.version>5.1.46</mysql.driver.version><!--把我加在这里--></properties>

打开application.properties:
将最后一行cas.authn.accept.users=casuser::Mellon加井号注释掉,再加入以下内容

cas.authn.jdbc.query[0].url=jdbc:mysql://localhost:3306/badmin?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false
cas.authn.jdbc.query[0].user=root
cas.authn.jdbc.query[0].password=211314
cas.authn.jdbc.query[0].sql=select * from sys_user where account=?
cas.authn.jdbc.query[0].fieldPassword=password
cas.authn.jdbc.query[0].driverClass=com.mysql.jdbc.Driver

重启Tomcat大功告成。

3.3、客户端(spring boot)

在新建的springboot的pom文件中加入:

        <!-- https://mvnrepository.com/artifact/net.unicon.cas/cas-client-autoconfig-support --><dependency><groupId>net.unicon.cas</groupId><artifactId>cas-client-autoconfig-support</artifactId><version>1.7.0-GA</version></dependency>

在pom.xml做如下配置,配置内容意思很简单,配置内容的原理上面也说到,当访问分布式系统的资源时,会检验有没有ticket,没有ticket的话会跳转到登录界面,登录成功后要跳转回来当前访问的资源。
application .properties添加如下:

cas:server-url-prefix: http://localhost:8080/casserver-login-url: http://localhost:8080/cas/loginclient-host-url: http://localhost:9100validation-type: casserver:port: 9100

主类中加入@EnableCasClient:

@EnableCasClient
@SpringBootApplication
public class CasStarterApplication {public static void main(String[] args) {SpringApplication.run(CasStarterApplication.class, args);}
}

接口测试:

@RestController
public class TestController {@GetMapping("/test")public String get(){return "test success";}
}

未授权的服务错误解决方案:

在服务端application.properties加入:

#开启识别json文件,默认false
cas.serviceRegistry.initFromJson=true

访问localhost:9100/test
跳转到登录界面
参考地址:

https://segmentfault.com/a/1190000013728604?utm_source=tag-newest
MVC版本的客户端:
https://segmentfault.com/a/1190000013844049

CAS单点登录(http方式)相关推荐

  1. cas 单点登录 http 方式配置实现

    前言: 单点登录指的是在系统的集群中,登录其中一个子系统就可以无需再次登录访问其他的子系统或者主系统,目前比较流行的单点登录的解决方案就是使用 cas的方式 准备: 1.下载一个 cas-server ...

  2. CAS单点登录-配置数据库认证方式

    接下来,说一下配置数据库认证单点登录 如果你之前的单点登录搭成功了,之后就简单多了,只需要添加一些配置和jar包即可.若未成功,请参考CAS单点登录入门配置 步骤: 1.引入相关jar包 2.创建数据 ...

  3. CAS 单点登录 服务器整合

    概述 现在企业内部的系统越来越多,如果各个应用都有自己的用户系统,那么用户将不得不要记住不同系统的用户名密码,因此独立的用户系统应运而生,各个系统之间通过单点登录的方式,这样内部只需要记住一个用户名和 ...

  4. 爆破专栏丨Spring Security系列教程之实现CAS单点登录上篇-概述

    作者:千锋一一哥 前言 从本章节开始,一一哥 会给各位讲解一个很常见也很重要的知识点,就是单点登录!现在的大型分布式项目,基本都会考虑实现单点登录,而且现在网上也有很多单点登录的实现方案.开源项目,但 ...

  5. CAS单点登录原理简单介绍

    1. SSO简介 1.1 单点登录定义 单点登录(Single sign on),英文名称缩写SSO,SSO的意思就是在多系统的环境中,登录单方系统,就可以在不用再次登录的情况下访问相关受信任的系统. ...

  6. 利用memcached实现CAS单点登录集群部署

    前言:利用memcached实现CAS单点登录集群部署 负载均衡: 将接口请求的有状态性变成无状态性.是我们在实现负载均衡时必要要解决的问题.以应用接口的session状态为例,一般解决方法都是将se ...

  7. cas单点登录-https的配置(一)

     前言   由于个人的兴趣和为了加薪,在这里研究下cas单点登录,同时也记录下自己探索的过程,希望也能帮到有同样兴趣的小伙伴 环境 CAS-5.1.3 tomcat8.5 jdk8 centos6.5 ...

  8. cas client 更新ticket_有人知道 cas单点登录系统是怎么样取得proxyticket的?

    展开全部 CAS 原理和协议 从结构上看,CAS 包含两个部分: CAS Server 和 CAS Client.CAS Server 需要独立部署,主要负责62616964757a686964616 ...

  9. CAS 单点登录/登出 系统

    前言: 在我们的实际开发中,更多的是采用分布式系统.那么问题来了,对于分布式系统的登录问题,我们如何解决呢? 如果说我们在每一个系统中都要进行一次登录,那么用户体验度也就差的没法用了.以京东商城为例, ...

最新文章

  1. python对话框机制_Chromium 新的弹窗机制以及 HTML 的 dialog 元素
  2. python培训中心-深圳Python培训
  3. vue require动态路径图片报错_Vue 动态生成路由结构
  4. 不可能解开的谜题   (程序员修炼之道,评注者序)
  5. Tesseract-OCR 字体库下载地址
  6. ffplay-主要数据结构分析
  7. 关于华为宣讲的一些感悟
  8. cisco路由器配置
  9. 数据中心设计方案 实例,数据中心网络设计方案
  10. vue权限管理实现思路
  11. at89s51单片机是几位微型计算机,单片机原理章习题
  12. Flixel横板游戏制作教程(五)— Enemies
  13. MSSQL2005的新功能创建数据库快照
  14. Java中多态的表现形式
  15. excel表格拆分的快捷操作
  16. 家谱网站 php,家谱网站大全
  17. 怎样实现MindMapper中主题的自由移动
  18. VHDL语言基础-概述
  19. java葵花宝典中的宝典!
  20. SQL Server 用 SQL 语句创建表

热门文章

  1. c语言一个等于号与两个等于号的区别
  2. Google Map 初步使用
  3. JAVA 多用户商城系统b2b2c-Spring Cloud Stream 介绍
  4. uni-app前端开发(零)
  5. 【转】Java程序性能优化
  6. vue 四级联动 地址联动 vue级联选择
  7. 定时任务的corn表达式
  8. 数据平台建设的痛点,如何进行元数据治理?
  9. [Python] 让AI来解决数独和数独谜题
  10. 色彩理论之彩虹CMYK值