版权声明:fromZjy QQ1045152332 https://blog.csdn.net/qq_36762677/article/details/84930357
单点登录 |
单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。
传统session不能解决多服务器下单点登录
CAS ( Central Authentication Service ),基于Java实现的、开源SSO解决方案。cas旨在为 Web 应用系统提供一种可靠的单点登录解决方法(属于 Web SSO )。
协议流程 |
部署+code |
服务端部署
- CAS默认使用HTTPS协议 需要SSL证书(需要申请和购买)连接->>去掉https
将war改名为cas.war(容易访问)部署到tomcat
初始用户名密码casuser/Mellon
- 修改密码:
1.1. 选择配置文件
1.2. 添加用户名密码
- 端口修改8080->80
2.1 修改tomcat端口/conf/server.xml
2.2 修改<connector port=“9100”>
2.3 修改cas的配置文件/webapps/cas/WEB-INF
2.4
客户端
- 引入cas客户端core依赖
Spring Boot使用Redis如何实现Session共享
pom
<!-- 多个微服务间共享session2 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-redis</artifactId>
<version>1.4.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
</dependency>
配置类或启动类
@SpringBootApplication
//@EnableRedisHttpSession注解开启Spring session支持
//maxInactiveIntervalInSeconds参数是设置Session失效时间
@EnableRedisHttpSession(maxInactiveIntervalInSeconds=60)
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
配置文件
############################################################
#
# REDIS 配置
#
############################################################
# Redis数据库索引(默认为0)
spring.redis.database=1
spring.redis.host=127.0.0.1
spring.redis.port=6379
# Redis服务器连接密码(默认为空)
spring.redis.password=1234567
# 连接超时时间(毫秒)
spring.redis.timeout=5000
测试
@Controller
public class MainController {
@RequestMapping(value="/getSessionId")
@ResponseBody
public String getSessionId(HttpServletRequest request){
Object o = request.getSession().getAttribute("springboot");
if(o == null){
o = "spring boot 端口"+request.getLocalPort()+"生成";
request.getSession().setAttribute("springboot", o);
}
return "端口=" + request.getLocalPort() + " sessionId=" + request.getSession().getId() +"<br/>"+o;
}
}