1 单点登录与CAS

单点登录(Single Sign On,SSO)是一种登录管理机制,主要用于多系统集成,即在多个系统中,用户只需要到一个中央服务器登录一次即可访问这些系统中的任何一个,无须多次登录。常见的例子就是,当我们在淘宝网上登录了之后,如果再访问天猫网的话是不需要再次登录的。
CAS是SSO的一种实现方式,CAS系统分为服务端与客户端,服务端提供登录认证的功能,客户端需要跳转到服务端进行登录认证,大体流程如下(图转自 官网 ):

关于SSO和CAS,这里有一篇详细的 文章

2 CAS 服务端搭建

2.1 SSL配置

CAS 服务端登录需要使用https,在本地我们可以使用 JDK 自带的 keytool 工具生成数字证书,具体流程和配置如下:

a 修改hosts文件,将要配置的CAS服务端域名映射到本地:

127.0.0.1       www.laixiaoming.com

b 生成密钥库文件,这里设置密钥库口令,名字与姓氏处填写单点登录服务器的域名(这里是 www.laixiaoming.com),其余项可随便填写。654321,设置密钥口令:654321,两者须相同:

keytool -genkey -alias localhost -keyalg RSA -keysize 2048 -validity 3660 -keystore localhost.keystore


c 查看生成的密钥库,输入密钥库密码654321:

keytool -list -keystore localhost.keystore

d 生成crt证书文件,输入密钥库密码654321:

keytool -export -alias localhost -keystore localhost.keystore -file localhost.crt

e 客户端信任证书,这里需要输入的密码是changeit:

keytool -import -keystore "D:\Program Files\Java\jdk1.8.0_66\jre\lib\security\cacerts" -file localhost.crt -alias localhost

f tomcat配置,server.xml配置:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"maxThreads="200"SSLEnabled="true"scheme="https"secure="true"clientAuth="false"sslProtocol="TLS"keystoreFile="D:\dev\localhost.keystore"keystorePass="654321" />

2.2 新建项目

CAS已经提供了服务端的基本war包实现,我们只需在其基础上作修改即可,使用maven 的oerlay配置可以通过覆盖的方式来进行修改。

a 新建Maven webapp项目,这里命名为cas-server-demo,引入依赖:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><groupId>gdou.laixiaoming</groupId><artifactId>cas-server-demo</artifactId><packaging>war</packaging><version>0.0.1-SNAPSHOT</version><name>cas-server-demo Maven Webapp</name><url>http://maven.apache.org</url><properties><cas.version>5.2.5</cas.version></properties><dependencies><dependency><groupId>org.apereo.cas</groupId><artifactId>cas-server-webapp</artifactId><version>${cas.version}</version><type>war</type><scope>runtime</scope></dependency></dependencies><build><finalName>cas</finalName><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.1</version><configuration><source>1.8</source><target>1.8</target></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-war-plugin</artifactId><configuration><failOnMissingWebXml>false</failOnMissingWebXml><warName>cas</warName><overlays><overlay><groupId>org.apereo.cas</groupId><artifactId>cas-server-webapp</artifactId></overlay></overlays></configuration></plugin></plugins></build></project>

b 打包,选择上面我们配置的tomcat,启动:
浏览器打开https://www.laixiaoming.com:8443/cas/login,默认登录名和密码是casuserMellon,输入后可成功登录

2.3 配置数据库认证

上面我们成功搭建了CAS Server,但是只能使用默认的用户名和密码进行登录,如果我们的用户名和密码是存储在数据库的话,需要引入 JDBC的支持并进行配置:

a 首先,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><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.36</version></dependency>

b 创建用户密码表:

CREATE TABLE `user` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`userName` varchar(15) DEFAULT NULL,`password` char(32) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4;

c 将war包中的的application.properties复制出来:

放到项目如下位置,这里的路径需要对应(确保部署后的application.properties可以对原文件进行覆盖),才能实现更新:

d 修改application.properties,关于JDBC这里的更详细的配置,可以访问官网 database-authentication部分:


#数据库连接配置
cas.authn.jdbc.query[0].user=root
cas.authn.jdbc.query[0].password=mysql
cas.authn.jdbc.query[0].driverClass=com.mysql.jdbc.Driver
cas.authn.jdbc.query[0].url=jdbc:mysql://localhost:3306/cas_auth
cas.authn.jdbc.query[0].dialect=org.hibernate.dialect.MySQLDialect##从数据库中获取用户名和密码进行匹配登录
cas.authn.jdbc.query[0].sql=SELECT * FROM `user` WHERE userName=?
cas.authn.jdbc.query[0].fieldPassword=password

e 重新构建项目并启动,输入数据库中存在的用户名和密码,是可以成功登录的;

完整项目见GitHub

参考:
https://blog.csdn.net/qq_34021712/article/category/8004639/1

CAS单点登录:CAS服务端搭建相关推荐

  1. CAS服务下单点登录(服务端与客户端)

    转自:http://www.open-open.com/lib/view/open1359286846414.html 此文的目的是为了加深自己的理解,做一个备份与分享 过程全为自己的实际操作步骤 第 ...

  2. CAS单点登录3--服务端登录页个性化

    原理 cas的页面显示控制是集中在\WEB-INF\cas.properties中的cas.viewResolver.basename属性的,其默认值为default_views 所以cas会去cla ...

  3. cas 5.3.x 服务端搭建(一)

    前期准备: 服务端官⽅下载:https://github.com/apereo/cas-overlay-template 客户端官⽅下载:https://githu b.com/cas-project ...

  4. springboot+shiro+cas实现单点登录之shiro端搭建

    github:https://github.com/peterowang/shiro-cas 本文如有配置问题,请查看之前的springboot集成shiro的文章 1.配置ehcache缓存,在re ...

  5. 基于Spring Security + OAuth2 的SSO单点登录(服务端)

    相关技术 spring security: 用于安全控制的权限框架 OAuth2: 用于第三方登录认证授权的协议 JWT:客户端和服务端通信的数据载体 传统登录 登录web系统后将用户信息保存在ses ...

  6. SSO之CAS单点登录详细搭建

    2019独角兽企业重金招聘Python工程师标准>>> SSO之CAS单点登录详细搭建 : 环境说明: 同一个机器上环境如下: 操作系统:windows7 64位 JDK版本:1.7 ...

  7. 01单点登录CAS 5.3.4搭建及使用

    01单点登录CAS 5.3.4搭建及使用 参考网址1 参照网址2 参照网址3 此文档代码GitHub地址 一.CAS介绍 单点登录Single Sign on (SSO), CAS ( Central ...

  8. CAS单点登录(一):启动CAS认证中心服务

    CAS单点登录(一):启动CAS认证中心服务 准备并启动CAS服务端 一些配置 移除HTTPS认证 修改CAS端口 默认登录用户名 准备并启动CAS服务端 访问CAS下载链接下载CAS4.0 解压,找 ...

  9. apereo cas开发_Apereo CAS Server服务端搭建教程

    不说废话了,直接看搭建过程吧. 这个是下载后解压的目录,可以直接通过CMD执行mvnw.bat clean package 来构建,但是他会去找系统配置的M2_HOME,如果找不到会报错,这个时候可以 ...

  10. CAS单点登录的时候出现票根'ST-xxxxxx-cas'不符合目标服务

    CAS单点登录遇到问题:票根'ST-xxxxxx-cas'不符合目标服务,原因出在linux 时间未同步,差了3分钟 . 转载于:https://www.cnblogs.com/wangtianze/ ...

最新文章

  1. 亚洲首获奖!清华大学团队获ACM SIGCOMM 2021唯一最佳学生论文奖
  2. 项目通用环境使用说明
  3. Appium base knowledge
  4. stackoverflow上Java相关回答整理翻译FAQ top 100
  5. Android中的Fragment使用
  6. oracle存储照片,[oracle]中存储图片
  7. cnpm不是内部或外部命令 cnpm: command not found 解决方案 cnpm
  8. 获得显示器设置的分辨率
  9. 【BZOJ3681】Arietta,主席树优化网络流
  10. chrome浏览器上传文件延迟_UEditor chrome 点击上传文件选择框会延迟几秒才会显示...
  11. c++ 一个函数包括多个返回值判断_go语言学习笔记(10)-函数、包的使用
  12. 【BZOJ4561】[JLoi2016]圆的异或并
  13. java----EL表达式
  14. pc连接用hybrid,并untagged,交换机用trunk
  15. CTPN - 自然场景文本检测
  16. 选购羽毛球拍的初级知识
  17. 路径中的“./“,“../“,“/“ 代表的含义
  18. 什么是DevOps模式
  19. 硬盘分区备忘(主分区,扩展分区和逻辑分区)以及Linux硬盘分区工具parted 介绍
  20. 人工智能还是人工智障?我tm快崩溃了

热门文章

  1. 第3章 从零开始的计算机系统
  2. 《黑客与画家》读书笔记
  3. 51Talk-Level 7 Unit 1 L3
  4. 淘宝客小程序制作(3)-API编写及部署
  5. 网页调起支付宝付款和微信付款
  6. 电力电子应用技术_应用于电气自动化驱动与控制的电力电子技术展示
  7. 公众号模板消息发送限制
  8. 树莓派Ubuntu20.04常见问题总结
  9. 广发股票交易接口做什么的?
  10. 慕思618静悄悄,暴利生意做不下去了?