cas 单点登录服务搭建+示例demo

都知道分布式是由一个个小模块组装到一起的一种架构,搭建在多台服务器上,

那么问题来了-------》既然是很多个小模块组装的,那我们登录的seesion怎么办?我在服务器1上登录了,其它服务器怎么知道?那么我从功能1--进入功能2,我就不是我了?功能2后续操作是不是就丢了?

解决办法自然也就来了

 

CAS是Central Authentication Service的缩写,中央认证服务,一种独立开放指令协议。CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法

1、开源的企业级单点登录解决方案。

CAS分为两部分,CAS Server和CAS Client。

CAS Server用来负责用户的认证工作,就像是把第一次登录用户的一个标识

存在这里,以便此用户在其他系统登录时验证其需不需要再次登录。(我的理解:就像是你去旅游区,首先得去,你先到窗口去买票,你去旅游区具体景点的时候凭票据进入,别人就知道你买票了,CAS Server就是售票窗

CAS Client就是我们自己开发的应用程序,需要接入CAS Server端。当用户

访问我们的应用时,首先需要重定向到CAS Server端进行验证,要是原来登陆过,就免去登录,重定向到下游系统,否则进行用户名密码登陆操作。(我的理解:这里就是旅游区具体景点,游客进来,CAS Client这边就是检查票据的检票员,你没买票,把游客挡住让他去买票,有票的放行让他进景点游玩

好了咱们动真格的

首先得去下载Cas Server    地址: https://pan.baidu.com/s/1T-qC1vjXkmoMdpPhBismLQ  
提取码:9ap0 
 (那就直接用我的吧,当然也可以自己去https://github.com/apereo/cas/releases/那边下载,自己打成war)

好我这边是打好的war,直接放入tomcat  webapp下,启动tomcat就好了, 

还需要下载三个包

 

 也可以自己选择数据库,及数据库连接池,这边以c3p0和mysql数据库为例

把这三个包放入war包的WEB-INF\lib下

然后修改配置

WEB-INF下面的deployerConfigContext.xml

找到   

修改为  

新增


 
    
    
 
    
	 

具体修改完成之后为:







    
    
        
            
                
                
                 
                
				
            
        

        

        
        
            
        
    

    
    

    
    
        
            
                
            
        
    


 
    
    
 
    
	 
    
    

    
    

    
    

    
        
        
        
        
            memberOf
            
                faculty
                staff
                org
            
        
    

    

    

    

    
        
        
        
    

这样CAS Server服务端就搭建好了,启动tomcat就OK了

当然现在是不允许http协议的

WEB-INF\classes\services把HTTPSandIMAPS-10000001.json改一下

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

带上http就好了

 

 

 

那再来来CAS Client端的实现吧

我这里就直接贴代码了    Spring boot实现



	4.0.0
	
		org.springframework.boot
		spring-boot-starter-parent
		2.1.4.RELEASE
		 
	
	com.example
	demo4
	0.0.1-SNAPSHOT
	demo4
	Demo project for Spring Boot

	
		1.8
	

	
		
			org.springframework.boot
			spring-boot-starter-web
		

		
			net.unicon.cas
			cas-client-autoconfig-support
			1.4.0-GA
		
		
			mysql
			mysql-connector-java
			runtime
		
		
			org.projectlombok
			lombok
			true
		
		
			org.springframework.boot
			spring-boot-starter-test
			test
		
	

	
		
			
				org.springframework.boot
				spring-boot-maven-plugin
			
		
	


cas:
    client-host-url: http://127.0.0.1:8084
    server-login-url: http://127.0.0.1:9090/cas/login
    server-url-prefix: http://127.0.0.1:9090/cas
    validation-type: CAS
server:
    port: 8084
package com.example.demo.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


@RestController
public class IndexController {
    
    @RequestMapping("/login")
    public String auth() {
        return "login success";
    }
}
package com.example.demo;

import net.unicon.cas.client.configuration.EnableCasClient;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@EnableCasClient
@SpringBootApplication
public class Demo4Application {

	public static void main(String[] args) {
		SpringApplication.run(Demo4Application.class, args);
	}

}

cas 单点登录服务搭建+示例demo_第1张图片

 

启动一下项目就可以来看看效果了

访问 http://127.0.0.1:8084/login

cas 单点登录服务搭建+示例demo_第2张图片

 发现要到cas那边去登录

登录成功后返回回来了

cas 单点登录服务搭建+示例demo_第3张图片

 有fiddler的你们可以抓一下包,就清楚了

你可能感兴趣的:(java)