CAS单点登录 (不创建项目) 直接配置版 修改版

1 篇文章 0 订阅

<h3 style="margin: 0px; padding: 0px; color: rgb(51, 51, 51); font-family: Arial; line-height: 26px;">别人写的一些难懂的地方,我做了一些修改。</h3>

1、创建证书

证书是单点登录认证系统中很重要的一把钥匙,客户端于服务器的交互安全靠的就是证书;本教程由于是演示所以就自己用JDK自带的keytool工具生成证书;如果以后真正在产品环境中使用肯定要去证书提供商去购买,证书认证一般都是由VeriSign认证

我们这里采用JDK自带的keytool工具生成证书:

keytool -genkey -alias mycas -keyalg RSA -keystore E:/keys/mykey

注意的地方是名字与姓氏就是域名的输入地方,不要用IP地址。


2、导出证书

E:\keys>       keytool -export -file E:/keys/mycas.crt -alias mycas -keystore E:/keys/mykey


3、客户端JVM导入证书

keytool -import -keystore E:\ProgramFiles\Java\jdk1.6.0_10\jre\lib\security\cacerts -file E:/keys/mycas.crt -alias mycas

值得注意的是,我在配置的过程中报错了,JAVA.IO的一个异常。解决方法是:将jdk目录\jre\lib\security的cacerts删除。


4、将证书应用到web服务器上,这里使用的是tomcat

打开tomcat目录的conf/server.xml文件,8443端处 去掉注释,并设置keystoreFile、keystorePass修改结果如下:

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" 
	       keystoreFile="E:/keys/mykey"
	       keystorePass="生成KEY的密码"
/>

参数说明:keystoreFile:在第一步创建的key存放位置 keystorePass:创建证书时的密码

打开https://localhost:8443/,,可以测试


5、配置CAS服务器

cas-server-3.4.3.1.zip解压,解压cas-server-3.4.3/modules/cas-server-webapp-3.4.3.1.war,改名为cas.war,tomcat自动解压开,然后复制cas目录到你的tomcat/webapp目录下

https://localhost:8443/cas/login ,现在打开了CAS服务器的页面输入admin/admin点击登录(CAS默认的验证规则只要用户名和密码相同就通过)系统会提示登录成功。


6、CAS服务器连接数据库的配置

首先打开tomcat/webapp/cas/WEB-INF/deployerConfigContext.xml文件,注释掉SimpleTestUsernamePasswordAuthenticationHandler这个验证Handler    改成

<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
			<property name="dataSource" ref="dataSource" />
			<property name="sql" value="select lower(password) AS password from userinfo where username=?" />
			 <property name="passwordEncoder" ref="MD5PasswordEncoder"/> 
    </bean>

添加如下:JDBC查询接口,数据源,可以加下CAS的MD5加密是小写的 所以查询的时候 用lower方法接口。(在 beans 下定义bean)

	 <bean id="MD5PasswordEncoder" class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder">  
     <constructor-arg index="0">
      <value>MD5</value>
     </constructor-arg>
    </bean> 
	<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
       <property name="driverClassName"><value>com.mysql.jdbc.Driver</value></property>
       <property name="url"><value>jdbc:mysql://localhost:3306/shujuku</value></property>
       <property name="username"><value>root</value></property>
       <property name="password"><value>root</value></property>
    </bean>
复制cas-server-3.4.3.1\modules\cas-server-support-jdbc-3.4.3.1.jar和mysql驱动jar包到tomcat/webapp/cas/WEB-INF/lib目录


7、CAS客户端的配置

在你的客户端工程中添加一个cas-client-core-3.2.1.jar包。

web.xml中添加如下信息:

<!-- 用于单点退出,该过滤器用于实现单点登出功能,可选配置-->
<listener>
	<listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>
</listener>
 
<!-- 该过滤器用于实现单点登出功能,可选配置。 -->
<filter>
	<filter-name>CAS Single Sign Out Filter</filter-name>
	<filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>
</filter>
<filter-mapping>
	<filter-name>CAS Single Sign Out Filter</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>
 
<!-- 该过滤器负责用户的认证工作,必须启用它 -->
<filter>
	<filter-name>CASFilter</filter-name>
	<filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
	<init-param>
		<param-name>casServerLoginUrl</param-name>
		<param-value>https://localhost:8443/cas/login</param-value>
		<!--这里的server是服务端的IP-->
	</init-param>
	<init-param>
		<param-name>serverName</param-name>
		<param-value>http://localhost:8080</param-value>
	</init-param>
</filter>
<filter-mapping>
	<filter-name>CASFilter</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>
 
<!-- 该过滤器负责对Ticket的校验工作,必须启用它 -->
<filter>
	<filter-name>CAS Validation Filter</filter-name>
	<filter-class>
		org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class>
	<init-param>
		<param-name>casServerUrlPrefix</param-name>
		<param-value>https://localhost:8443/cas</param-value>
	</init-param>
	<init-param>
		<param-name>serverName</param-name>
		<param-value>http://localhost:8080</param-value>
	</init-param>
</filter>
<filter-mapping>
	<filter-name>CAS Validation Filter</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>
 
<!--
	该过滤器负责实现HttpServletRequest请求的包裹,
	比如允许开发者通过HttpServletRequest的getRemoteUser()方法获得SSO登录用户的登录名,可选配置。
-->
<filter>
	<filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
	<filter-class>
		org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class>
</filter>
<filter-mapping>
	<filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>
 
<!--
	该过滤器使得开发者可以通过org.jasig.cas.client.util.AssertionHolder来获取用户的登录名。
	比如AssertionHolder.getAssertion().getPrincipal().getName()。
-->
<filter>
	<filter-name>CAS Assertion Thread Local Filter</filter-name>
	<filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class>
</filter>
<filter-mapping>
	<filter-name>CAS Assertion Thread Local Filter</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>
 <!-- ======================== 单点登录结束 ======================== -->

8、CAS的登录页面修改

可以对CAS的登录页面进行外观上的修改,实际项目中肯定需要用到。


9、CAS在客户端页面上的获取

在页面上,我们可以通过String uname = request.getRemoteUser();获得CAS中的用户名信息。













  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值