15、CAS单点登录概念说明、去除SSL认证设置、CAS配置数据库用户名和密码、i18n和语言国际化处理、springSecurity整合cas、user中心Spring整合cas、单点登出到指定页面

CAS单点登录概念说明

去除SSL认证设置

CAS配置数据库用户名和密码

i18n和语言国际化处理

springSecurity整合cas

user中心Spring整合cas

单点登出到指定页面

2019年3月22日00:04:33(这个博客没时间写了,先把随记文档放在这里)

一、CAS服务端部署及配置

//1.将资源中提供的cas.war包部署到tomcat的服务器上(拷贝到webapps目录)
//2.用户名:casuser  密码:Mellon,(deployerConfigContext.xml可修改用户名,密码)
//3.测试地址http://localhost:9100/cas
//4.修改端口号需要tomcat改,和cas的WEB-INF/cas.properties(server.name=http://localhost:9100)
//5.测试新的端口地址确认没问题http://localhost:9100/cas

​ 去除https认证的三个步骤:

​ https:需要申请和够买SSL安全证书,有单独的认证机构,申请SSL后安装到服务器上

​ (1)修改cas的WEB-INF/deployerConfigContext.xml

//增加p:requireSecure="false"是否需要安全认证,即关闭HTTPS协议
//p:p命名空间 相当于在类里声明了该属性
<bean class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler" p:httpClient-ref="httpClient" p:requireSecure="false"/>

​ (2)找个最长的,修改cas的/WEB-INF/spring-configuration/ticketGrantingTicketCookieGenerator.xml

//修改两处
//cookieSecure为HTTPS验证相关,cookieMaxAge为COOKIE的最大生命周期,-1关闭浏览器就失效,秒为单位
<bean id="ticketGrantingTicketCookieGenerator" class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator"
      p:cookieSecure="false"  //修改true为false
      p:cookieMaxAge="3600"	  //修改-1为3600(1小时)
      p:cookieName="CASTGC"
      p:cookiePath="/cas" />

​ (3)修改cas的WEB-INF/spring-configuration/warnCookieGenerator.xml修改方法同上

二、CAS客户端Demo 单点登录

​ 1.创建casclient_demo的war工程,端口号设定9001(测试临时占用)

​ 2.拷贝资源->配置文件中CAS目录下的pom.xml及web.xml文件

​ 3.注意web.xml中配置的CAS服务器地址端口号,和本地地址端口号都是否正确

​ 4.编写登录后进入的首页(index.jsp)

<body>
非洲大草原欢迎你心中的千马奔腾
<%=request.getRemoteUser()%>
</body>

​ 5.创建casclient_demo2的war工程,端口号设定9002(测试临时占用),其他模仿demo1

三、单点退出登录,测试时注意清除浏览器缓存,改配置的时候,先关闭掉tomcat

<a href="http://localhost:9100/cas/logout">退出登录</a>

​ 如果想退出跳转到指定页面,修改cas系统的配置文件cas-servlet.xml

  //最后一个参数followServiceRedirects换成true
  <bean id="logoutAction" class="org.jasig.cas.web.flow.LogoutAction"
        p:servicesManager-ref="servicesManager"
        p:followServiceRedirects="${cas.logout.followServiceRedirects:true}"/>
        
  //之后页面的链接跳转增加service,注意写全访问路径
  <a href="http://localhost:9100/cas/logout?service=https://www.baidu.com/">退出登录</a>

​ 测试http://localhost:9002/casclient_demo2和http://localhost:9001/casclient_demo1

四、CAS服务端配置数据源

​ 1.3个jar包放到cas项目的WEB-INF\lib目录下(负责访问数据库)

​ 2.deployerConfigContext.xml ,添加如下配置

    //文档下面加上
    <!--c3p0数据源的配置-->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"  
			  p:driverClass="com.mysql.jdbc.Driver"  
			  p:jdbcUrl="jdbc:mysql://127.0.0.1:3306/myApplicationdb?characterEncoding=utf8"  
			  p:user="root"  
			  p:password="root" /> 
	 <!--密码用了md5所以需要配置对应p:passwordEncoder-ref-->		  
	<bean id="passwordEncoder" 
			class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder"  
			c:encodingAlgorithm="MD5"  
			p:characterEncoding="UTF-8" /> 
     <!--负责验证用户登录-->
	<bean id="dbAuthHandler"  
			  class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"  
			  p:dataSource-ref="dataSource"  
			  p:sql="select password from tb_user where username = ?"  
			  p:passwordEncoder-ref="passwordEncoder"/>  
	
	<!--文档上面找到将primaryAuthenticationHandler改为dbAuthHandler
	<entry key-ref="primaryAuthenticationHandler" value-ref="primaryPrincipalResolver" />-->

​ 3.测试用数据库中的用户名密码进行登录

五、修改cas的登录页面效果 apache-tomcat\webapps\cas\WEB-INF\view\jsp\default\ui

//添加指令
<%@ 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" %>
//修改form标签大致49行
<form:form method="post" id="fm1" commandName="${commandName}" htmlEscape="true" class="sui-form">
//修改用户名框
<form:input id="username" tabindex="1" accesskey="${userNameAccessKey}" path="username" autocomplete="off" htmlEscape="true" placeholder="邮箱/用户名/手机号" class="span2 input-xfat" />
//修改密码框
<form:password  id="password" tabindex="2" path="password" accesskey="${passwordAccessKey}" htmlEscape="true" autocomplete="off" placeholder="请输入密码" class="span2 input-xfat"   />
//修改登录按钮
<input type="hidden" name="lt" value="${loginTicket}" />//登录票据相关
<input type="hidden" name="execution" value="${flowExecutionKey}" />
<input type="hidden" name="_eventId" value="submit" />
<input class="sui-btn btn-block btn-xlarge btn-danger" accesskey="l" value="登&nbsp;&nbsp;录" type="submit" />
</form:form>

​ 5.中文错误提示

​ 首先加入错误提示框

//<form:form 表单行下直接加入如下配置
<form:errors path="*" id="msg" cssClass="errors" element="div" htmlEscape="false" />

​ WEB-INF\classes\messages.properties文件有关于错误信息的描述

authenticationFailure.AccountNotFoundException=Invalid credentials.
authenticationFailure.FailedLoginException=Invalid credentials.

​ 首先设置国际化en改为zn_CN,修改cas-servlet.xml

//之前是en改成zh_CN
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver" p:defaultLocale="zh_CN" />

​ 在messages_zh_CN.properties下增加中文提示

authenticationFailure.AccountNotFoundException=\u7528\u6237\u4E0D\u5B58\u5728.
authenticationFailure.FailedLoginException=\u5BC6\u7801\u9519\u8BEF.

六、CAS客户端与SpringSecurity集成

​ 1.建立casclient_demo3新工程,或者在demo1上进行改造,改成支持springSecurity的

//1.拷贝pom.xml坐标,端口号设置为9003
//2.拷贝web.xml其中就是springSecurity和springmvc的内容
//3.拷贝spring的配置文件
//4.拷贝UserDetailServiceImpl.java这个不是为了认证,而是为了加用户角色信息(可以拷贝shop-web)

​ 2.创建UserController.java类

package cn.itcast.demo.controller;

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

​ 3.测试地址栏输入http://localhost:9003/casclient_demo3/findLoginUser.do即可在控制台输出的登录名

​ 4.退出登录—设置退出后的页面,修改spring-security.xml

//将之前的百度地址改成要跳转的页面
<beans:constructor-arg value="http://localhost:9100/cas/logout?service=http://localhost:9003/index.jsp"/>

//index.html增加退出
<a href="logout/cas">退出登录</a>

七、品优购用户中心

​ 1.将home开头的页面全部拷贝到user-web工程

//pom坐标信息这部分内容可以忽略,父工程已经导入四个依赖的坐标,其中包括security和对cas支持的
		<dependency>
			<groupId>org.springframework.security</groupId>
			<artifactId>spring-security-cas</artifactId>
			<version>4.1.0.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.jasig.cas.client</groupId>
			<artifactId>cas-client-core</artifactId>
			<version>3.3.3</version>
			<!-- 排除log4j包冲突 -->
			<exclusions>
				<exclusion>
					<groupId>org.slf4j</groupId>
					<artifactId>log4j-over-slf4j</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>org.springframework.security</groupId>
			<artifactId>spring-security-web</artifactId>
			<version>4.1.0.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.security</groupId>
			<artifactId>spring-security-config</artifactId>
			<version>4.1.0.RELEASE</version>
		</dependency>

​ 2.web.xml设置首页,设置springSecurity的过滤器,注意classpath:spring-security.xml路径

	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:spring/spring-security.xml</param-value>
	</context-param>
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

	<filter>
		<filter-name>springSecurityFilterChain</filter-name>
		<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>springSecurityFilterChain</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	
	<welcome-file-list>
		<welcome-file>home-index.html</welcome-file>
	</welcome-file-list>

​ 4.user-web工程下,创建com.myApplication.user.service包,拷贝UserDetailsServiceImpl.java

​ 5.拷贝spring-security.xml并进行修改,测试登录并看效果

	//1.可匿名访问的资源
	<http pattern="/css/**" security="none"></http>
	<http pattern="/js/**" security="none"></http>
	<http pattern="/image/**" security="none"></http>
	<http pattern="/plugins/**" security="none"></http>
	<http pattern="/register.html" security="none"></http>
	<http pattern="/user/add.do" security="none"></http>
	<http pattern="/user/sendCode.do" security="none"></http>

	//2.配置自身工程地址
	<!--service 配置自身工程的根地址+/login/cas   -->  
    <beans:property name="service" value="http://localhost:9106/login/cas"/>
    
    //3.设置认证类
    <beans:bean id="userDetailsService" class="com.myApplication.user.service.UserDetailServiceImpl"/> 
	

​ 测试运行查看效果

​ 6.显示用户名,修改UserController.java增加showName方法

	//UserController增加显示用户名方法
	@RequestMapping("/showName")
	public Map showName(){
		String name = SecurityContextHolder.getContext().getAuthentication().getName();//得到登陆人账号
		Map map=new HashMap<>();
		map.put("loginName", name);
		return map;		
	}	

	//修改userService.js
	this.showName=function(){
		return $http.get('user/showName.do');		
	}
	
	修改userController.js
	$scope.showName=function(){
		userService.showName().success(
			function(response){				
				$scope.loginName=response.loginName;
			}
		);		
	}	

​ home-index.html修改

	//引入js
    <script type="text/javascript" src="plugins/angularjs/angular.min.js"></script>
	<script type="text/javascript" src="js/base.js"></script>	
	<script type="text/javascript" src="js/service/userService.js"></script>
	<script type="text/javascript" src="js/controller/baseController.js"></script>
	<script type="text/javascript" src="js/controller/userController.js"></script>
	//body调用指令
	<body ng-app="myApplication" ng-controller="userController" ng-init="showName()">
	//大约162行的用户名改成动态获取
	<span class="name">{{loginName}}</span>

​ 7.退出登录功能,修改spring-security.xml

	//单点登出的地址
	<beans:constructor-arg value="http://localhost:9100/cas/logout?service=http://localhost:9103"/> 
	
	//修改home-index.html页面退出登录链接修改为
	<a href="/logout/cas">退出登录 </a>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值