java 单点登录 cas 修改配置文件 为查询数据库登录

java 单点登录 cas 修改配置文件 为查询数据库登录

1、上一篇文章,我们已经把 cas-server 部署到 myeclipse 下了,现在可以根据自己的需要去修改相应的配置文件了。

2、CAS默认需要tomcat配置SSL协议,使用https协议通信的。 由于项目是企事业单位内部的系统,不需要这么高的安全级别, 可以简化操作,不走SSL协议。修改下配置文件\WEB-INF\spring-configuration\ticketGrantingTicketCookieGenerator.xml, 如下, 将默认的true改成false即可。

    <bean id="ticketGrantingTicketCookieGenerator" class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator"  
            p:cookieSecure="false"  
            p:cookieMaxAge="-1"  
            p:cookieName="CASTGC"  
            p:cookiePath="/cas" />  

3、配置登录的验证逻辑, 修改配置文件cas\WEB-INF\deployerConfigContext.xml。在authenticationHandlers中配置验证方式,我这里配置数据库查询语句来实现用户名和密码的验证。红色部分,注释掉默认的简单验证方式(用户名密码相同即可),修改为查询数据库的bean,配置加密方式,以及数据源

注意事项:org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler 需要引入 cas-server-support-jdbc-3.5.2.jar 包

		<property name="authenticationHandlers">
			<list>
				<!--
					| This is the authentication handler that authenticates services by means of callback via SSL, thereby validating
					| a server side SSL certificate.
					+-->
				<bean class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler"
					p:httpClient-ref="httpClient" />
				<!--
					| This is the authentication handler declaration that every CAS deployer will need to change before deploying CAS 
					| into production.  The default SimpleTestUsernamePasswordAuthenticationHandler authenticates UsernamePasswordCredentials
					| where the username equals the password.  You will need to replace this with an AuthenticationHandler that implements your
					| local authentication strategy.  You might accomplish this by coding a new such handler and declaring
					| edu.someschool.its.cas.MySpecialHandler here, or you might use one of the handlers provided in the adaptors modules.
					+-->
			<!-- <bean class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" /> -->
				<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"> <property name="sql" value="select password from u_user where userName=?" /> <property name="passwordEncoder" ref="passwordEncoder"/> <property name="dataSource" ref="dataSource" /> </bean>
			</list>
		</property>
	</bean>

	<!-- 自定义 start --> <bean id="passwordEncoder" class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder" autowire="byName"> <constructor-arg value="MD5"/> </bean> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property> <property name="url" value="jdbc:oracle:thin:@192.168.96.28:1521:huihong"></property> <property name="username" value="rmsfusion"></property> <property name="password" value="rmsfusion"></property> </bean> <!-- 自定义 end -->

4、以上绿色部分为自定义的加密方式,跟数据源,此时注意,要导入连接数据库的驱动 jar 包,上面我用的是 spring jdbc 的方式连接数据库,因此数据源配置如上

需要jar包:org.springframework.jdbc.datasource.DriverManagerDataSource 需要 spring-jdbc-3.1.1.RELEASE.jar ,这个一般在cas 里都有了

                     还要连接oracle的驱动 jar包  ojdbc14.jar

注意事项:数据源配置不同数据库需要的jar包驱动,配置方式不同,容易出错,下面5列出采用dbcp连接池方式配置

5、红色部分即为采用dbcp配置数据源

	     <!--配置数据源 方式一 通过 spring jdbc 连接 start-->   
		     <!--
		        <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">  
		            <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property>  
		            <property name="url" value="jdbc:oracle:thin:@192.168.96.28:1521:huihong"></property>  
		            <property name="username" value="rmsfusion"></property>  
		            <property name="password" value="rmsfusion"></property>  
		        </bean>  
		      -->  
	     <!--配置数据源 方式一 通过 spring jdbc 连接 end--> 
	 
	     <!--配置数据源 方式二 通过 dbcp 连接池 连接 start--> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/> <property name="url" value="jdbc:oracle:thin:@192.168.96.28:1521:huihong"/> <property name="username" value="rmsfusion"/> <property name="password" value="rmsfusion"/> <!-- 连接池启动时的初始值 --> <property name="initialSize" value="3" /> <!-- 连接池的最大值 --> <property name="maxActive" value="300" /> <!-- 最大空闲值.当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接慢慢释放一部分,一直减少到maxIdle为止 --> <property name="maxIdle" value="2" /> <!-- 最小空闲值.当空闲的连接数少于阀值时,连接池就会预申请去一些连接,以免洪峰来时来不及申请 --> <property name="minIdle" value="1" /> <!-- end --> </bean> <!--配置数据源 方式二 通过 dbcp 连接池 连接 end-->  

注意事项:需要 dbcp 连接池的 jar 包

                      commons-dbcp-1.2.2.jar      commons-pool-1.5.4.jar

6、此时已配置完成,数据库里面的密码必须是md5加密的,启动,输入用户名密码登录试下。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/111323.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java线程池拒绝策略_Java线程池拒绝策略

    java线程池拒绝策略_Java线程池拒绝策略Java提供的策略实现CallerRunsPolicypublicstaticclassCallerRunsPolicyimplementsRejectedExecutionHandler{publicCallerRunsPolicy(){}publicvoidrejectedExecution(Runnabler,ThreadPoolExecutore){if(!…

    2022年6月15日
    26
  • 实战模拟│使用多进程教你下载 m3u8 加密或非加密视频「建议收藏」

    实战模拟│使用多进程教你下载 m3u8 加密或非加密视频「建议收藏」下载m3u8加密或非加密视频,让你视频自由

    2022年7月18日
    32
  • idea设置背景颜色为黑色(eclipse背景颜色设置黑色)

    黑夜给了我黑色的眼睛我却用它来寻找光明。既然是黑色的眼睛那就设置一波黑色背景吧。在黑色额背景中寻找光明。设置步骤:File->Settings->Appearance&Behavior->Appearance就是如此的简单迅速,黑色诱惑一波。就很nice!!!…

    2022年4月13日
    50
  • 什么是udp攻击_udp攻击原理

    什么是udp攻击_udp攻击原理什么是UDP攻击?完整的说应该是UDP淹没攻击(UDPFloodAttack)UDP淹没攻击是导致基于主机的服务拒绝攻击的一知种。UDP是一种无连接的协议,而且它不需要用任何程序建立连接来传输数据。当攻击者随机地向受害系统的端口发送UDP数据包的时候,就可能发生了UDP淹没攻击。当受害系统接收到一个UDP数据包的时候,它会确定目的道端口正在等待中的应用程序。当它发现该端口中并不存在正在等待的应用程序,它就会产生一个目的地址无法连接的ICMP数据包发送给该伪造的源地址。如果向受害

    2022年10月2日
    0
  • IntelliJ IDEA 修改内存大小,使得idea运行更流畅。

    IntelliJ IDEA 修改内存大小,使得idea运行更流畅。IntelliJIDEA使用教程(总目录篇)idea有个配置文件,可以设置内存大小的,就跟咱的jvm的内存里面的堆大小,栈大小等等,可以设置的,而且设置了之后,你这个的性能就会得到提升。具体看下面怎么修改。先说所要修改的文件idea.vmoptions的位置,这个不同的平台,估计名称可能有些差别。mac的如下图具体怎么找到这个地方的,刚刚使用mac的估计不会,老手就会啦,…

    2022年10月26日
    0
  • vlan的作用[通俗易懂]

    vlan的作用[通俗易懂]什么是VLAN呢?VLAN(VirtualLocalAreaNetwork)即虚拟局域网,是将一个物理的LAN在逻辑上划分成多个广播域的通信技术。VLAN有哪些作用呢?一张图看懂VLAN的作用:由上图可以看出:通过划分不同的VLAN,VLAN内的主机间可以直接通信,而VLAN间不能直接互通,从而将广播报文限制在一个VLAN内。限制广播域:广播域被限制在一个VLAN内,节省了带宽,提高了…

    2022年8月10日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号