博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
单点登录:spring-security-cas
阅读量:2240 次
发布时间:2019-05-09

本文共 7115 字,大约阅读时间需要 23 分钟。

  Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统

Centos7安装cas系统

  (1) 上传cas.war到Centos机器的tomcat/webapps目录下

  (2) 端口修改

vim /usr/local/tomcat/apache-tomcat-7.0.52/conf/web.xml

vim /usr/local/tomcat/apache-tomcat-7.0.52/webapps/cas/WEB-INF/cas.properties

   (3) 去除https认证

    1) 修改casWEB-INF/deployerConfigContext.xml

vim /usr/local/tomcat/apache-tomcat-7.0.52/webapps/cas/WEB-INF/deployerConfigContext.xml

    2) 修改cas/WEB-INF/-configuration/ticketGrantingTicketCookieGenerator.xml

    参数p:cookieSecure="true",同理为HTTPS验证相关,TRUE为采用HTTPS验证,FALSE为不采用https验证。

    参数p:cookieMaxAge="-1",是COOKIE的最大生命周期,-1为无生命周期,即只在当前打开的窗口有效,关闭或重新打开其它窗口,仍会要求验证。可以根据需要修改为大于0的数字,比如3600等,意思是在3600秒内,打开任意窗口,都不需要验证

vim /usr/local/tomcat/apache-tomcat-7.0.52/webapps/cas/WEB-INF/spring-configuration/ticketGrantingTicketCookieGenerator.xml

    3) 修改casWEB-INF/spring-configuration/warnCookieGenerator.xml

vim /usr/local/tomcat/apache-tomcat-7.0.52/webapps/cas/WEB-INF/spring-configuration/warnCookieGenerator.xml

  (4) cas认证数据源配置

    1) 修改cas服务端中web-infdeployerConfigContext.xml ,添加如下配置

    2)

注释:
添加:
搜索定位:在浏览模式下:/

    3) 导入jar包

cp -r c3p0-0.9.1.2.jar /usr/local/tomcat/apache-tomcat-7.0.52/webapps/cas/WEB-INF/libcp -r cas-server-support-jdbc-4.0.0.jar /usr/local/tomcat/apache-tomcat-7.0.52/webapps/cas/WEB-INF/libcp -r mysql-connector-java-5.1.32.jar /usr/local/tomcat/apache-tomcat-7.0.52/webapps/cas/WEB-INF/lib

   (5) 替换cas登录页面

    1) 将css  js等文件夹拷贝到  cas目录下

    2) 将工程登录页拷贝到cas系统下WEB-INF\view\jsp\default\ui 目录下,并重命名为casLoginView.jsp(先重命名cas系统原casLoginView.jsp)

    3) 添加指令

<%@ page pageEncoding="UTF-8" %><%@ page contentType="text/html; charset=UTF-8" %><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %><%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %><%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

    4) 修改form标签

......

    5) 修改登录框

    6) 修改登录按钮

    7) 错误提示,在form内表单添加

     8) 修改错误提示

vim /usr/local/tomcat/apache-tomcat-7.0.52/webapps/cas/WEB-INF/cas-servlet.xml

     9) 在messages_zh_CN.properties添加以下内容

vim /usr/local/tomcat/apache-tomcat-7.0.52/webapps/cas/WEB-INF/classes/messages_zh_CN.properties authenticationFailure.AccountNotFoundException=\u7528\u6237\u4E0D\u5B58\u5728.authenticationFailure.FailedLoginException=\u5BC6\u7801\u9519\u8BEF.

 spring-security整合cas  

  (1) 添加依赖

org.springframework.security
spring-security-web
org.springframework.security
spring-security-config
javax.servlet
servlet-api
provided
org.springframework.security
spring-security-cas
org.jasig.cas.client
cas-client-core
org.slf4j
log4j-over-slf4j

   (2) 授权认证类

import java.util.ArrayList;import java.util.List;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;public class UserDetailServiceImpl implements UserDetailsService {    @Override    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {        System.out.println("UserDetailsServiceImpl : " + username);            // 角色授权        List
authorities = new ArrayList
(); GrantedAuthority authority = new SimpleGrantedAuthority("ROLE_USER"); authorities.add(authority); return new User(username, "", authorities); }}

   (3) spring-security.xml

  
     
      
     
     

   (4) web.xml

home-index.html
CharacterEncodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
utf-8
CharacterEncodingFilter
/*
xxx-user-web
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:spring/springmvc.xml
1
xxx-user-web
*.do
contextConfigLocation
classpath:spring/spring-security.xml
org.springframework.web.context.ContextLoaderListener
springSecurityFilterChain
org.springframework.web.filter.DelegatingFilterProxy
springSecurityFilterChain
/*

   (5) 页面登出代码

  (6) 获取登录名

@RestControllerpublic class UserController {    @RequestMapping("/findLoginUser")    public void  findLoginUser(){        String name = SecurityContextHolder.getContext().getAuthentication().getName();        System.out.println(name);            }    }

 

转载于:https://www.cnblogs.com/lin-nest/p/10322624.html

你可能感兴趣的文章
回答阿里社招面试如何准备,顺便谈谈对于Java程序猿学习当中各个阶段的建议
查看>>
Dubbo分布式服务框架入门(附工程)
查看>>
两年Java开发工作经验面试总结
查看>>
作为Java面试官--谈谈一年来的面试总结
查看>>
两年Java程序员面试经
查看>>
面试心得与总结---BAT、网易、蘑菇街
查看>>
如何面试有2年java工作经验的应聘人员
查看>>
Java实现简单的递归操作
查看>>
面试Java程序员需具备的11个技能
查看>>
HashMap 和 HashTable 到底哪不同 ?
查看>>
Java实现简单的递归操作
查看>>
Struts2工作原理和执行流程图
查看>>
在线预览Word,Excel~
查看>>
hibernate延迟加载(get和load的区别)
查看>>
关于文件拷贝效率问题
查看>>
MyBatis分页插件PageHelper的使用
查看>>
【MyBatis学习01】宏观上把握MyBatis框架
查看>>
【MyBatis学习02】走进MyBatis的世界
查看>>
【MyBatis学习03】原始dao开发方法及其弊端
查看>>
【MyBatis学习04】mapper代理方法开发dao
查看>>