`
01jiangwei01
  • 浏览: 542901 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

cas 系统实例 服务端配置(一)

 
阅读更多

最近在研究cas 并对其进行改版,终于有所成就,写出来与大家分享一下,不足之处希望指教,共同进步。

首先下载casserver和casclient

 

下载地址分别为:

服务器端下载: http://www.jasig.org/cas_server_3_4_11_release

客户端下载:http://www.jasig.org/jasig-cas-client-java-version-321-releas

 

 

部署方法:

将casserver解压后取其中的modules/cas-server-webapp-3.4.11.war.将其重命名为casserver.war,然后放到tomcat的webapps中。

并修改cas.property里的路径,替换/cas/casserver

访问路径:http://localhost:8081/casserver到达登录

 

 

 


输入用户名abc,密码abc,即可登录成功。系统要求用户名=密码。

 

下面我们改版,让其支持数据库登录检测。

 

1.修改deployerConfigContext.xml文件,添加数据源配置

 
<bean id="casDataSource" class="org.apache.commons.dbcp.BasicDataSource">
   <property name="driverClassName">
      <value>com.mysql.jdbc.Driver</value>
   </property>
   <property name="url">
     <value>jdbc:mysql://192.168.1.100/ires?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true</value>
   </property>
   <property name="username">
      <value>ires</value>
    </property>
    <property name="password">
      <value>i709394</value>
   </property>
</bean>

 

  定义MD5的加密方式

<bean id="passwordEncoder"
class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder" autowire="byName">
<constructor-arg value="MD5"/>
</bean>

 

配置authenticationManager下面的authenticationHandlers属性

<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
     <property name="dataSource" ref="casDataSource" />
     <property name="sql" value="select community_password from community_user_info where lower(community_user_info.community_user) = lower(?)" />
     <property name="passwordEncoder" ref="passwordEncoder"/>
</bean>

 需要引入jar文件为:cas-server-support-jdbc-version.jar

 

修改点2:获取用户信息保存,方便各个客户端可以统一得到用户信息

 

1.定义attributeRepository,通过jdbc查询用户的详细信息,可以把用户表或用户的所属组织机构或角色等查询出来。

写道
<bean id="attributeRepository" class="org.jasig.services.persondir.support.jdbc.SingleRowJdbcPersonAttributeDao">
    <constructor-arg index="0" ref="casDataSource" />
    <constructor-arg index="1" value=" select * from USERS where USER_NAME = ? "/>
    <property name="queryAttributeMapping">
        <map>
          <entry key="username" value="uid"/>
       </map>
     </property>
     <property name="resultAttributeMapping">
      <map>
      <entry key="ID" value="id"/><!--要查询的附加属性,前者数据库属性,后者映射后的属性-->
      <entry key="USER_NAME" value="userName"/>
      <entry key="CHANNEL" value="chanel"/>
     <entry key="STATUS" value="status"/>
     </map>
</property>
</bean>

 

修改名称为serviceRegistryDao的bean,在list中选择针对自己选择的方式添加属性,我这里选择的是http://**类型,然后添加了需要额外查询的属性名

                 <property name="allowedAttributes">
                            <list>
                                <value>id</value>
                                <value>chanel</value>
                                <value>status</value>
                            </list>
                        </property>

总体如下。

<bean
		id="serviceRegistryDao"
        class="org.jasig.cas.services.InMemoryServiceRegistryDaoImpl">
            <property name="registeredServices">
                <list>
                    <bean class="org.jasig.cas.services.RegisteredServiceImpl">
                        <property name="id" value="0" />
                        <property name="name" value="HTTP" />
                        <property name="description" value="Only Allows HTTP Urls" />
                        <property name="serviceId" value="http://**" />
                        <property name="evaluationOrder" value="10000001" />
                        <property name="allowedAttributes">
                        	<list>
                                         <!--映射后的属性--> 
                                        <value>id</value>
                        		<value>chanel</value>
                        		<value>status</value>
                        	</list>
                        </property>
                    </bean>

                    <bean class="org.jasig.cas.services.RegisteredServiceImpl">
                        <property name="id" value="1" />
                        <property name="name" value="HTTPS" />
                        <property name="description" value="Only Allows HTTPS Urls" />
                        <property name="serviceId" value="https://**" />
                        <property name="evaluationOrder" value="10000002" />
                    </bean>

                    <bean class="org.jasig.cas.services.RegisteredServiceImpl">
                        <property name="id" value="2" />
                        <property name="name" value="IMAPS" />
                        <property name="description" value="Only Allows HTTPS Urls" />
                        <property name="serviceId" value="imaps://**" />
                        <property name="evaluationOrder" value="10000003" />
                    </bean>

                    <bean class="org.jasig.cas.services.RegisteredServiceImpl">
                        <property name="id" value="3" />
                        <property name="name" value="IMAP" />
                        <property name="description" value="Only Allows IMAP Urls" />
                        <property name="serviceId" value="imap://**" />
                        <property name="evaluationOrder" value="10000004" />
                    </bean>
                </list>
            </property>
        </bean>

 

SingleRowJdbcPersonAttributeDao.java 在下面下载。

配置authenticationManager中credentialsToPrincipalResolvers属性

<bean class="org.jasig.cas.authentication.principal.UsernamePasswordCredentialsToPrincipalResolver">
<property name="attributeRepository" ref="attributeRepository" /> </bean>

 

注意:默认cas登录服务器没有把用户信息传到客户端中 ,所以要修改WEB-INF\view\jsp\protocol\2.0\casServiceValidationSuccess.jsp文件,增加

 
 
<c:if test="${fn:length(assertion.chainedAuthentications[fn:length(assertion.chainedAuthentications)-1].principal.attributes) > 0}">
<cas:attributes>
<c:forEach var="attr" items="${assertion.chainedAuthentications[fn:length(assertion.chainedAuthentications)-1].principal.attributes}">

<cas:${fn:escapeXml(attr.key)}>${fn:escapeXml(attr.value)}</cas:${fn:escapeXml(attr.key)}>


</c:forEach>
</cas:attributes>
</c:if>
  取消https验证
 
在网络安全性较好,对系统安全没有那么高的情况下可以取消https验证,使系统更加容易部署。

1.修改ticketGrantingTicketCookieGenerator.xml

XML/HTML代码
<bean id="ticketGrantingTicketCookieGenerator" class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator"
p:cookieSecure="false"
p:cookieMaxAge="-1"
p:cookieName="CASTGC"
p:cookiePath="/cas" />
p:cookieSecure改成false,客户端web.xml中单独服务器的链接改成http
  随机码,查看附件RandomNumberPictureController.rar
参考网站http://blog.csdn.net/turkeyzhou/article/details/5509725
自己修改页面时,注意修改路径web-info/cas.property文件
  • 大小: 27.8 KB
分享到:
评论

相关推荐

    CAS4.1.4服务端和客户端实例

    CAS4.1.4是CAS的一个特定版本,该版本包含了服务端和客户端的实现,使得用户只需一次登录就可以访问多个相互信任的应用系统。 在CAS4.1.4中,服务端是核心组件,负责验证用户的凭证(如用户名和密码),并为客户端...

    cas 普通方式和SpringBoot方式客户端 普通方式服务端

    CAS(Central Authentication Service)是一种广泛使用的开放源码身份验证框架,它允许用户通过单一登录(Single Sign-On,SSO)访问多个应用系统。在本文中,我们将探讨如何在普通方式和Spring Boot方式下配置和...

    cas服务端和客户端可用代码

    总结,这个压缩包提供的代码是实现CAS服务端和客户端的实例,适用于快速搭建SSO环境。其中,服务端处理用户身份验证,客户端则负责与服务端的交互和本地应用的安全控制。通过直接运行代码,开发者可以省去大量初始化...

    落雨博客基于CAS框架的单点登录技术讲解(ppt+code实例+doc)配套资料

    内含本人实例精华,一个自做PPT,动画解析cas协议,四个客户端client程序实例,一个server端程序,N个文档以及所有xml文件。配套讲解博客地址: [置顶] SSO单点登录系列3:cas-server端配置认证方式实践(数据源+...

    Spring Security集成CAS客户端实例

    本实例旨在展示如何将Spring Security与CAS结合,实现一个高效的单点登录(Single Sign-On,SSO)解决方案。下面,我们将深入探讨这个集成过程。 首先,Spring Security是Spring框架的一部分,专门用于应用程序的...

    CAS单点登录例子,包含服务端和客户端

    综上所述,这个压缩包提供了一个完整的CAS单点登录实例,包括服务端和客户端的实现,可以帮助开发者理解并部署自己的CAS系统。通过深入研究和实践,你可以掌握如何利用CAS实现Web应用的安全、便捷的单点登录功能。

    springmvc+spring+shiro+cas单点登录实例

    然后clean install tomcat7:run 就能跑起来,注意要修改node1和node2里的shiro.properties配置文件,要配置登录成功成功返回的路径 我的访问的分别是: 服务端: http://localhost:8050/cas-server 客户端:...

    cas单点登录代码例子 有文档 服务端客户端例子 亲测可用

    在这个压缩包中,包含了一个CAS服务端和客户端的代码实例,以及相关的配置文档,可以帮助开发者快速理解和实现CAS SSO功能。 服务端部分(cas-server-4.0.0-release.rar): CAS服务端是整个SSO的核心,它负责验证...

    cas实现单点登录服务端及客户端

    SSO允许用户通过一次登录验证就能访问多个应用系统,无需在每个系统之间单独进行身份验证,极大地提高了用户体验和安全性。本教程将深入探讨如何使用CAS实现服务端和客户端的集成。 1. CAS服务端搭建 - 安装环境:...

    cas4.1.4服务端+client端

    CAS4.1.4服务端和客户端实例,直接修改配置即可运行,详细参见博文:http://blog.csdn.net/chenhai201/article/details/50623395

    Yelu 大学 cas 单点登录实例

    在这个实例中,Yelu大学的CAS服务器负责验证用户的凭证,而各个应用系统作为CAS客户端,通过与服务器交互来验证用户的登录状态。 1. **CAS服务器的部署和配置** - CAS服务器通常作为独立的应用运行,可以使用...

    CAS单点登陆测试实例demo,源码

    在这个实例中,我们将深入探讨如何通过提供的源码来理解和设置一个CAS SSO测试环境。 首先,我们要了解的是`CAS服务端`。CAS服务器是整个SSO系统的核心,负责用户的认证和会话管理。在提供的压缩包中,"cas服务端的...

    CAS单点登录实例详细步骤

    本文将详细解析“CAS单点登录实例详细步骤”这一主题,通过分析给定文件的标题、描述、标签以及部分内容,提炼出关于CAS SSO配置的关键知识点。 #### 二、CAS单点登录基础知识 CAS的核心功能在于提供一种安全的...

    利用CAS实现单点登录的完整实例

    总结,通过学习和实践这个"利用CAS实现单点登录的完整实例",你将掌握如何使用Jasig CAS构建一个高效的单点登录系统,从而提升用户体验,简化身份验证管理,并加强系统的安全性。记得深入理解每个步骤,并根据实际...

    Yale CAS Server的部署及cas-java-client 3.2的应用

    2. **初始化客户端**:创建`CasClient`实例,配置CAS Server的URL和服务验证URL。 3. **服务票证验证**:当用户访问受保护的资源时,客户端会检查是否存在有效的服务票证(ST)。如果没有,它将重定向用户到CAS ...

    struts2+cas单点登陆例子

    Struts2和CAS单点登录(SSO)的集成是一个常见的Web应用安全实践,它允许用户在一个系统登录后,无须再次输入凭证就能访问其他相互信任的系统。在这个例子中,我们将深入探讨如何在MyEclipse环境下使用Struts2框架与...

    yale-cas服务器端深度定制

    【压缩包子文件的文件名称列表】"my-cas-server"可能是一个包含博主定制的CAS服务器实例的文件夹,其中可能包括以下内容: 1. **源代码**:可能包含了对原版CAS的修改或扩展,比如自定义的认证模块、服务注册接口等...

    SSO服务端客户端源代码实例

    本资源包含了一个完整的SSO服务端与客户端的源代码实例,旨在帮助开发者深入理解和实践SSO的实现。 SSO服务端通常负责身份验证,它存储用户的凭证信息,如用户名和密码,以及与这些凭证关联的角色和权限。在本实例...

Global site tag (gtag.js) - Google Analytics