springsecurity整合cas客户端

springsecurity整合cas客户端

这几天都在弄一个springSecurity整合Cas的单点登陆的例子,cas服务端已经弄好的,所以这里我只是说一下客户端的配置我是怎么弄的,以及出现的问题

  1. web.xml文件

	sso test

	
		org.springframework.web.context.ContextLoaderListener
	

	
	
		CharacterEncodingFilter
		org.springframework.web.filter.CharacterEncodingFilter
		
			encoding
			utf-8
		
	
	
		CharacterEncodingFilter
		/*
	

	
	
		dispatcher
		org.springframework.web.servlet.DispatcherServlet
		
			contextConfigLocation
			classpath*:spring/spring-mvc.xml
		
		1
	
	
		contextConfigLocation
		
			classpath*:spring/spring-mvc.xml
		
	
	
		dispatcher
		/pages/*
	
	
		dispatcher
		/hyperlink/*
	

	
		dispatcher
		/rest/*
	

	
		HiddenHttpMethodFilter
		org.springframework.web.filter.HiddenHttpMethodFilter
	
	
		HiddenHttpMethodFilter
		dispatcher
	

	
	
		org.jasig.cas.client.session.SingleSignOutHttpSessionListener
	
	
		springSecurityFilterChain
		org.springframework.web.filter.DelegatingFilterProxy
	
	
		springSecurityFilterChain
		/*
	
	
	
	
		index.html
	
	
		30
	

2.接下来是springMVC.xml,里面引入了spring-security-cas.xml



    
    
        
            
                classpath:env.properties
            
        
    
    
        
        
    


    
    
        
    


    
    
        
            
                
            
        
    
    
        
            
                text/plain;charset=UTF-8
                application/json;charset=UTF-8
            
        
        
            
                
                    
                        
                    
                
            
        
    


    
        
            
                text/json;charset=UTF-8
            
        
    
    

    
        
            
                
                
            
        
    
    

    



  1. spring-security-cas.xml配置如下:


	
	
		
		
		
		
		
		
		
	

	
	
		
		
		
		
	

	
		
	

	
		
	

	
		
		
			
				
				
			
		
		
		
		
			
				
				
			
		
		
	

	
	
		
		
	

	  
	      
	    
	    
	      
	    
	    
	     
	    
	    
	

	

	
	
	
		

		
		
			
		
		
		
	
	


还有对应的环境配置文件 env.properties

#注意一下,这个地址需要在cas服务端加入到白名单
spring.security.sysmgr.service.prefix=http://localhost:8080/sso_test
spring.security.cas.prefix=https://xxx.xx.com  //cas服务认证地址
spring.security.cas.prefix_intranet=https://xxx.xx.com  //cas服务认证地址和上面一样
spring.security.sysmgr.service.login.url=https://xxx.cxc.cn//这个是退出之后的地址

4,java的实现类
这个实现类里面不用做任何的逻辑处理


import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;

import java.util.HashMap;
import java.util.Map;

public class UserInfoService implements UserDetailsService {
    private final Log logger = LogFactory.getLog(getClass());

    /**
     * 此处的参数[loginId]为CAS登录画面输入的用户名
     */
    @Override
    public UserDetails loadUserByUsername(String loginId) throws UsernameNotFoundException {
        String[] loginIds = loginId.split(",");
        Long loginId1 = Long.valueOf(loginIds[0]);
        logger.info(loginId1);
        System.out.println("ID--->" + loginId1);

        UserInfo userInfo = new UserInfo();
        userInfo.setUid(loginId1);
        userInfo.setUsername("wwd");
        userInfo.setPassword("123456");
        userInfo.setName("wwdname");
        userInfo.setOrgLeafId(111L);
        userInfo.setCompId(11111L);
        userInfo.setDeptId(111112L);
        userInfo.setOrgFullName("test");
        userInfo.setOrgFullName("test");
        userInfo.setDeptName("test");
        userInfo.setIsprofess("test");
        userInfo.setCompName("test");

        return userInfo;
    }
}

到这里基本上就已经配置完毕了,我自己的例子中还是用到了apache的反向代理,就是cas认证服务器白名单中的一个地址代理成我本地的地址,这个网上都是有详细的说明的。就是说到这里吧,弄这个springsecurity整合cas的单点登陆花了我好几天,哎、、、

你可能感兴趣的:(日记)