SSO单点登录系列3:cas-server端配置认证方式实践

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 详见:http://blog.csdn.net/ae6623/article/details/8851801 文中所有资料下载地址:在文章中最下方。   本篇将讲解cas-server端的认证方式   1.最简单的认证,用户名和密码一致就登录成功 2.配置oracle的jdbc数据源,通过spring动态查询数据库 3.配置oracle和mysql的数据源,通过spring动态查询数据库,一个满足就立即登录成功 4.配置oracle和mysql的数据源,以及添加一个java类,三者认证,有一个满足就立即登录成功。

详见:http://blog.csdn.net/ae6623/article/details/8851801

文中所有资料下载地址:在文章中最下方。

 

本篇将讲解cas-server端的认证方式

 

1.最简单的认证,用户名和密码一致就登录成功

2.配置oracle的jdbc数据源,通过spring动态查询数据库

3.配置oracle和mysql的数据源,通过spring动态查询数据库,一个满足就立即登录成功

4.配置oracle和mysql的数据源,以及添加一个java类,三者认证,有一个满足就立即登录成功。

5.穿插自定义的MD5加密类对用户的密码进行加密和数据库里已经MD5加密的密码做对比。

 

好的,开始吧。

 

测试一:

 

ps:记得添加上所需的jar包,否则控制台会提示找不到数据库驱动这种低级错误。

 

jar包:

--------------------------------------------

cas-server-support-jdbc-3.3.3.jar

ojdbc14.jar

mysql-connector-java-5.1.16-bin.jar

--------------------------------------------

 

(1)最简单的认证,用户名和密码一致就登录成功

 

步骤:打开你的C:\tomcat7\webapps\casServer\WEB-INF\deployerConfigContext.xml文件

 

<bean class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />

这一句话就是默认的认证模式,直接用户名和密码一致就可以登录系统了,显然太白痴了一点。下面我们开始玩测试二

 

测试二:

(2)配置oracle的jdbc数据源,通过spring动态查询数据库

 

步骤:

1.打开你的C:\tomcat7\webapps\casServer\WEB-INF\deployerConfigContext.xml文件

2.注释掉那句很白痴的用户名和密码一致就让你认证通过的那行xml代码

3.添加oracle认证模式,添加自定义的MD5类,添加默认的cas的MD5验证类,添加oracle的数据源

<span style="font-family:Microsoft YaHei;font-size:14px;"><property name="authenticationHandlers">
  <list>
    <bean class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler" p:httpClient-ref="httpClient" p:requireSecure="false" />
    <!-- 不https验证: p:requireSecure="false" -->
    <!-- 默认认证模式:用户名和密码一致就认证通过 
             <bean class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />  
     -->
    <!--配置验证类1-->
    <bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
      <property name="dataSource" ref="dataSource"></property>
      <property name="sql" value="select pw from sys_acct_auth where user_code =?"></property>
      <!--下面这个是我自定义的MD5加密类-->
      <property name="passwordEncoder" ref="RS10Md5PasswordEncoder"></property>
      <!--下面这个是cas提供的MD5加密类,下面会有bean,你自己一睁眼就看到了,玩过spring的应该看一眼就吐了
               <property name="passwordEncoder" ref="MD5PasswordEncoder" ></property>
         -->
    </bean>
  </list>
</property>
<!-- 增加数据源1-->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
  <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
  <property name="url" value="jdbc:oracle:thin:@192.168.168.144:1521:hpora" />
  <property name="username" value="muapp10g" />
  <property name="password" value="ceshiku" />
</bean>
                      
<!--数据验证模式1 cas默认MD5加密类,返回值:加密后的字符串-->
<bean id="MD5PasswordEncoder" class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder">
  <constructor-arg index="0" value="MD5" />
</bean>
                      
<!--数据验证模式2 我自定义的MD5加密类,返回值:加密后的字符串-->
<bean id="RS10Md5PasswordEncoder" class="org.jasig.cas.authentication.handler.Crypt"></bean></span>

 

 

测试三:

(3)配置oracle和mysql的数据源,通过spring动态查询数据库,一个满足就立即登录成功

(4)配置oracle和mysql的数据源,以及添加一个java类,三者认证,有一个满足就立即登录成功。

(5)穿插自定义的MD5加密类对用户的密码进行加密和数据库里已经MD5加密的密码做对比。

 

有人说我的web1应用和web2应用拥有各自的用户群,各自的注册数据库,怎么办?对啊怎么办?

 

那么我们就在验证类的List标签里面多添加几个验证类,只要有一个验证方式通过了,我们就让用户登录成功,如何?

 

开始干吧,继续改造上面的那个xml文件。

 

最终的xml文件如下所示:

 

<span style="font-family:Microsoft YaHei;font-size:14px;"><property name="authenticationHandlers">
  <list>
    <bean class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler" p:httpClient-ref="httpClient" p:requireSecure="false" />
    <!-- 不https验证: p:requireSecure="false" -->
    <!-- 默认认证模式:用户名和密码一致就认证通过 
             <bean class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />  
     -->
                        
    <!--配置验证类1-->
    <bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
      <property name="dataSource" ref="dataSource"></property>
      <property name="sql" value="select pw from sys_acct_auth where user_code =?"></property>
      <!--下面这个是我自定义的MD5加密类-->
      <property name="passwordEncoder" ref="RS10Md5PasswordEncoder"></property>
      <!--下面这个是cas提供的MD5加密类,下面会有bean,你自己一睁眼就看到了,玩过spring的应该看一眼就吐了
               <property name="passwordEncoder" ref="MD5PasswordEncoder" ></property>
         -->
    </bean>
                        
    <!--配置验证类2-->
    <bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
      <property name="dataSource" ref="dataSourceForMySql"></property>
      <property name="sql" value="select pw from userInfo where username =?"></property>
    </bean>
                        
    <!--配置验证类3-->
    <bean class="org.jasig.cas.authentication.handler.RsCasDaoAuthenticationHandler" />
  </list>
</property>
                    
<!-- 增加数据源1-->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
  <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
  <property name="url" value="jdbc:oracle:thin:@192.168.168.144:1521:hpora" />
  <property name="username" value="muapp10g" />
  <property name="password" value="ceshiku" />
</bean>
                    
<!-- 增加数据源2-->
<bean id="dataSourceForMySql" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
  <property name="driverClassName">
    <value>com.mysql.jdbc.Driver</value>
  </property>
  <property name="url">
    <value>jdbc:mysql://localhost:3306/userdb</value>
  </property>
  <property name="username">
    <value>root</value>
  </property>
  <property name="password">
    <value>123</value>
  </property>
</bean>
                    
<!--数据验证模式1 cas默认MD5加密类,返回值:加密后的字符串-->
<bean id="MD5PasswordEncoder" class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder">
  <constructor-arg index="0" value="MD5" />
</bean>
                    
<!--数据验证模式2 我自定义的MD5加密类,返回值:加密后的字符串-->
<bean id="RS10Md5PasswordEncoder" class="org.jasig.cas.authentication.handler.Crypt"></bean></span>

 

截图如下:

 

 

 

ok 以上xml文件就可以满足你的一些简单的BT需求了。如果看到这里还有什么疑惑的话,我估计就是那些自定义的java类怎么写了。来来来,我教你。

 

 

下面的步骤详见:http://blog.csdn.net/ae6623/article/details/8851801

目录
相关文章
|
存储 安全 Java
【SSO-CAS部署】安装部署单点登录组件CAS(5.3.x版本)
【SSO-CAS部署】安装部署单点登录组件CAS(5.3.x版本)
655 0
【SSO-CAS部署】安装部署单点登录组件CAS(5.3.x版本)
|
数据安全/隐私保护
Jasny SSO支持哪些认证方式?底层原理是什么?
Jasny SSO支持哪些认证方式?底层原理是什么?
Jasny SSO是否支持OAuth认证?底层原理是什么?
Jasny SSO是否支持OAuth认证?底层原理是什么?
|
XML 安全 数据格式
Jasny SSO是否支持SAML认证?底层原理是什么?
Jasny SSO是否支持SAML认证?底层原理是什么?
jira学习案例26-用useHttp管理jwt和登录状态
jira学习案例26-用useHttp管理jwt和登录状态
54 0
jira学习案例26-用useHttp管理jwt和登录状态
|
缓存 网络安全
JavaWeb - SSO单点登录原理之基于CAS(二)
JavaWeb - SSO单点登录原理之基于CAS(二)
217 0
JavaWeb - SSO单点登录原理之基于CAS(二)
|
存储 NoSQL 安全
JavaWeb - SSO单点登录原理之基于CAS(一)
JavaWeb - SSO单点登录原理之基于CAS(一)
216 0
|
安全 Java 应用服务中间件
|
Java 数据安全/隐私保护
cas server +cas client 单点登录配置实例
cas server 配置 首先你要下一个 cas server 。如果你要有所了解的话,可以下载一个cas server source。 使用ide 打开 cas server ,maven 构建,jetty 运行。
1933 0