目录
- 单点登录
- 简介
- CAS服务器部署
- 上传tomcat服务器压缩到文件夹/usr/local/cas目录下,解压,修改tomcat文件夹名为tomcat
- 修改tomcat配置文件的端口号
- 关闭tomcat服务器,把CAS的war包放入tomcat的webapps目录当中后再启动tomcat服务器 对war包时行解压
- 关闭tomcat服务器后, 删除war包
- 监听启动
- 启动tomcat服务器
- 访问http://192.168.1.88:9100/cas/login
- 输入用户名casuser 密码:Mellon
- CAS使用
- 去除https认证与设置cookie
- 用户名和密码
- 数据源方法
- 自定义登录页面
- 用户服务添加CAS
- 引入pom文件
- 在web.xml当中添加过滤器
- 添加配置文件spring/spring-security.xml
- 创建认证类
- 前端工程添加CAS
- 在web.xml当中添加过滤器
- 添加配置文件spring/spring-security.xml
- 创建认证类
单点登录
简介
- 单点登录(Single Sign On),简称 SSO
- 简单来说,就是只要一次登录了某个子系统,就顺带登录了其他的子系统。
- 其目的很简单,就是为了减少用户访问子系统的成本。
CAS服务器部署
上传tomcat服务器压缩到文件夹/usr/local/cas目录下,解压,修改tomcat文件夹名为tomcat
mkdir /usr/local/cas
cd /usr/local/cas
修改tomcat配置文件的端口号
关闭tomcat服务器,把CAS的war包放入tomcat的webapps目录当中后再启动tomcat服务器 对war包时行解压
关闭tomcat服务器后, 删除war包
/usr/local/cas/tomcat/bin/shutdown.sh
rm -rf /usr/local/cas/tomcat/webapps/cas.war
监听启动
tail -f /usr/local/cas/tomcat/logs/catalina.out
启动tomcat服务器
/usr/local/cas/tomcat/bin/startup.sh
访问http://192.168.1.88:9100/cas/login
输入用户名casuser 密码:Mellon
CAS使用
去除https认证与设置cookie
//关闭tomcat
/usr/local/cas/tomcat/bin/shutdown.sh
//修改参数
vi /usr/local/cas/tomcat/webapps/cas/WEB-INF/classes/services/HTTPSandIMAPS-10000001.json
{
"@class" : "org.apereo.cas.services.RegexRegisteredservice",
"serviceId" : "^(https|http|imaps)://.*",
"name" : "HTTPS and IMAPS",
"id" : 10000001,
"description" : "This service definition authorizes all application urls that support HTTPS and IMAPS protocols.",
"evaluationorder" : 10000
}
//添加参数
vi /usr/local/cas/tomcat/webapps/cas/WEB-INF/classes/application.properties
cas.tgc.secure=false
cas.serviceRegistry.initFromJson=true
#配置允许登出后跳转到指定页面
cas.logout.followServiceRedirects=true
#跳转到指定页面需要的参数名为 service
cas.logout.redirectParameter=service
//重启tomcat
/usr/local/cas/tomcat/bin/startup.sh
用户名和密码
数据源方法
修改Mysql远程访问权限
create user user_cas identified with mysql_native_password by '123456';
grant all on *.* to 'user_cas'@'%';
FLUSH PRIVILEGES;
配置用户认证
将用户认证配置cas.authn.accept.users=casuser::Mellon注释掉
vi /usr/local/cas/tomcat/webapps/cas/WEB-INF/classes/application.properties
#cas.authn.accept.users=casuser::Mellon
#设置用户认证配置(根据实际情况配置数据源)
cas.authn.jdbc.query[0].url=jdbc:mysql://192.168.1.2:3306/fmstore?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC&useSSL=false
#根据实际情况配置
cas.authn.jdbc.query[0].user=user_cas
#根据实际情况配置
cas.authn.jdbc.query[0].password=123456
cas.authn.jdbc.query[0].sql=select * from tb_user where username= ?
cas.authn.jdbc.query[0].driverClass=com.mysql.cj.jdbc.Driver
cas.authn.jdbc.query[0].fieldPassword=password
cas.authn.jdbc.query[0].fieldExpired=expired
#cas.authn.jdbc.query[0].passwordEncoder.encodingAlgorithm=MD5
自定义登录页面
添加主题名称
- 在/usr/local/cas/tomcat/webapps/cas/WEB-INF/classes/service/HTTPSandIMAPS-10000001.json中添加"theme" : "mypage"
放入静态资源文件
- 把图片放到static/images当中
- js放到static/js当中
- css放到static/css当中
创建mypage.properties文件
在/usr/local/cas/tomcat/webapps/cas/WEB-INF/classes目录当中创建mypage.properties文件
#原cas默认的css样式,如果更改了,某些页面样式将丢失
cas.standard.css.file=/css/cas.css
#自己的样式
cas.page.login.css=/css/pages-login.css
cas.webbase.css=/css/webbase.css
cas.jquery.easing.min.js=/js/jquery.easing.min.js
cas.jquery.min.js=/js/jquery.min.js
cas.jquery.placeholder.min.js=/js/jquery.placeholder.min.js
cas.login.js=/js/login.js
cas.sui.min.js=/js/sui.min.js
cas.qq.png = /images/img/qq.png
cas.weixin.png = /images/img/weixin.png
在/usr/local/cas/tomcat/webapps/cas/WEB-INF/classes/templates中创建文件夹mypage
把页面放进去
在application.properties当中添加主题
- cas.theme.defaultThemeName=mypage
用户服务添加CAS
引入pom文件
org.springframework.security
spring-security-web
org.springframework.security
spring-security-config
org.springframework.security
spring-security-taglibs
org.springframework.security
spring-security-cas
org.jasig.cas.client
cas-client-core
org.slf4j
log4j-over-slf4j
joda-time
joda-time
2.10
在web.xml当中添加过滤器
contextConfigLocation
classpath:spring/spring-security.xml
org.springframework.web.context.ContextLoaderListener
springSecurityFilterChain
org.springframework.web.filter.DelegatingFilterProxy
springSecurityFilterChain
/*
添加配置文件spring/spring-security.xml
创建认证类
/**
* 自定义认证类:
* 在之前这里负责用户名密码的校验工作, 并给给当前用户赋予对应的访问权限
* 现在cas和springSecurity集成, 集成后, 用户名密码的校验工作交给cas完成, 所以能够进入到
* 这里类的方法中的都是已经成功认证的用户, 这里只需要给登录过的用户赋予对应的访问权限就可以
*/
public class UserDetailServiceImpl implements UserDetailsService {
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
//创建权限集合
List authorityList = new ArrayList<>();
//向权限集合中加入访问权限
authorityList.add(new SimpleGrantedAuthority("ROLE_USER"));
return new User(username, "", authorityList);
}
}
前端工程添加CAS
在web.xml当中添加过滤器
contextConfigLocation
classpath:spring/spring-security.xml
org.springframework.web.context.ContextLoaderListener
springSecurityFilterChain
org.springframework.web.filter.DelegatingFilterProxy
springSecurityFilterChain
/*
添加配置文件spring/spring-security.xml
创建认证类
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import java.util.ArrayList;
import java.util.List;
/**
* 自定义认证类:
* 在之前这里负责用户名密码的校验工作, 并给给当前用户赋予对应的访问权限
* 现在cas和springSecurity集成, 集成后, 用户名密码的校验工作交给cas完成, 所以能够进入到
* 这里类的方法中的都是已经成功认证的用户, 这里只需要给登录过的用户赋予对应的访问权限就可以
*/
public class UserDetailServiceImpl implements UserDetailsService {
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
//创建权限集合
List authorityList = new ArrayList<>();
//向权限集合中加入访问权限
authorityList.add(new SimpleGrantedAuthority("ROLE_USER"));
return new User(username, "", authorityList);
}
}