`
andy_ghg
  • 浏览: 293170 次
  • 性别: Icon_minigender_1
  • 来自: 扬州
社区版块
存档分类
最新评论

CAS配置第二步:服务器端的配置

    博客分类:
  • Java
阅读更多
紧接上一篇CAS配置第一步:准备工作

CAS Java 群35271653
1:加入数据库验证

再将cas.war部署到tomcat-cas-server下之后,
将oracle数据库驱动加入到cas工程的lib下
打开目录X:\tomcat-cas-server\webapps\cas\WEB-INF下的deployerConfigContext.xml修改里面的内容,注释掉以下代码:
<bean class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler"


这段代码CAS默认的验证方式,就是用户名和密码相同即可通过认证,我们现在做的时候加入数据库验证,就是用户名密码来自数据库。

在相同的位置上加入如下代码:
<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
	<property name="sql" value="select pwd from portal_user where id=? and sessionid is null" />
	<property name="dataSource" ref="dataSource" />
</bean>

其中,sql语句可以自定义成你想要的结果,例如:
select password from tablename where username=?

然后在根节点<beans>下加入节点如下:
<bean id="dataSource"
	class="org.springframework.jdbc.datasource.DriverManagerDataSource">
	<property name="driverClassName">
		<value>oracle.jdbc.driver.OracleDriver</value>
	</property>
	<property name="url">
		<value>jdbc:oracle:thin:@xxxxxxxxxxxxx:1521:pisdb</value>
	</property>
	<property name="username">
		<value>pis</value>
	</property>
	<property name="password">
		<value>pis</value>
	</property>
</bean>

里面的参数配置,XML诠释的非常清楚,不再解释。

2:让CAS返回更多用户信息XML修改
然后找到serviceRegistryDao这个节点,将里面的内容全部注释掉:
<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://**" />
			</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://**" />
			</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://**" />
			</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://**" />
			</bean>
		</list>
	</property>-->
</bean>

此节点的作用为:如果你在<list>中加入了bean,并设定了serviceId的value,那么通过CAS你只能访问这个url地址,其他的url地址将不能访问,**代表的意思就是指该协议下所有的都允许被访问。但是在实际操作中,加入如果不注释掉里面的内容,将会在客户端无法获取到用户更多的登录信息。

然后在配置文件的根节点(<beans>)下加入以下XML配置:
<bean id="attributeRepository" class="org.jasig.services.persondir.support.jdbc.SingleRowJdbcPersonAttributeDao">
	<constructor-arg index="0" ref="dataSource"/>
	<constructor-arg index="1" value="select * from portal_user where {0}" />
	<property name="queryAttributeMapping">  
			<map>  
				<entry key="username" value="id" />  
			</map>  
	</property>
	<property name="resultAttributeMapping">
		<map>
			<entry key="id" value="UserId"/>

			<entry key="sessionid" value="UserName"/>
			<entry key="uclass" value="UserClass"/>
		</map>
	</property>
</bean>

其中的sql语句可以根据自己的情况来写。下面resultAttributeMapping中的参数解释如下:
<entry key="id" value="UserId"/>
key代表的是你数据库中的字段,Value是客户端通过 AttributePrincipal获取时的参数

3:CAS登录获取更多用户信息的JSP修改
仅仅是修改xml是不够的,你必须修改他的casServiceValidationSuccess.jsp,路径为:
X:\tomcat-cas-server\webapps\cas\WEB-INF\view\jsp\protocol\2.0
在其中紧接着加入以下代码:

<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:attribute>
				<cas:${fn:escapeXml(attr.key)}>${fn:escapeXml(attr.value)}</cas:${fn:escapeXml(attr.key)}>
			</cas:attribute>
		</c:forEach>
	</cas:attributes>
</c:if>


注意:
1.在casServiceValidationSuccess.jsp中加入我们的代码的时候
<cas:${fn:escapeXml(attr.key)}>${fn:escapeXml(attr.value)}</cas:${fn:escapeXml(attr.key)}>

这里千万不能有空格!


2.在attributeRepository这个节点中,resultAttributeMapping下的配置,例如<entry key="id" value="UserId"/>在配置的时候需要注意数据库中存放的不能是中文(不过理论上可以解决,具体原因就是casServiceValidationSuccess.jsp在拼接XML的时候出现乱码。)有兴趣的可以尝试解决一下。
4
9
分享到:
评论
3 楼 andy_ghg 2012-02-10  
queryAttributeMapping
01jiangwei01 写道
引用

<bean id="attributeRepository" class="org.jasig.services.persondir.support.jdbc.SingleRowJdbcPersonAttributeDao"> 
    <constructor-arg index="0" ref="dataSource"/> 
    <constructor-arg index="1" value="select * from portal_user where {0}" /> 
   <property name="queryAttributeMapping">    
            <map>    
                <entry key="username" value="id" />    
            </map>    
    </property> 
    <property name="resultAttributeMapping"> 
        <map> 
            <entry key="id" value="UserId"/> 

            <entry key="sessionid" value="UserName"/> 
            <entry key="uclass" value="UserClass"/> 
        </map> 
    </property> 
</bean>

中的queryAttributeMapping是什麼意思啊?

查询数据库的时候所使用的参数,我也很久没有做这个配置了。可能也记不太清楚了。不好意思。
2 楼 01jiangwei01 2012-02-08  
引用

<bean id="attributeRepository" class="org.jasig.services.persondir.support.jdbc.SingleRowJdbcPersonAttributeDao"> 
    <constructor-arg index="0" ref="dataSource"/> 
    <constructor-arg index="1" value="select * from portal_user where {0}" /> 
   <property name="queryAttributeMapping">    
            <map>    
                <entry key="username" value="id" />    
            </map>    
    </property> 
    <property name="resultAttributeMapping"> 
        <map> 
            <entry key="id" value="UserId"/> 

            <entry key="sessionid" value="UserName"/> 
            <entry key="uclass" value="UserClass"/> 
        </map> 
    </property> 
</bean>

中的queryAttributeMapping是什麼意思啊?
1 楼 runkityboy 2011-12-19  
谢谢帮我解决问题了

相关推荐

    WAS与CAS配置

    2. CAS服务器与WAS服务器之间的SSL信任配置:为了确保CAS服务器与WAS服务器之间的通信安全,需要建立信任关系。这通常涉及到证书的导入和配置,以确保WAS服务器信任CAS服务器的SSL证书。 3. CAS Client端在WAS...

    CAS单点登录服务器端源码

    本压缩包文件“cas-server-3.5.2”提供了CAS服务器端的源代码,有助于开发者深入理解CAS的工作原理并进行定制化开发。 首先,让我们了解一下CAS的基本工作流程: 1. **预认证阶段**:当用户尝试访问一个受CAS保护...

    cas3.5.0集成oauth2.0协议

    1. **配置OAuth2.0服务**:在CAS服务器端,需要配置OAuth2.0的相关参数,如客户端ID、客户端密钥、授权端点、令牌端点等,以支持OAuth2.0协议。 2. **创建OAuth2.0客户端**:在第三方服务(如微博)上注册应用,...

    java源码:Java单点登录系统 JA-SIG CAS.rar

    4. **CAS配置**: 在源码中,你会看到服务器和客户端的配置文件,如`cas.properties`,它们定义了CAS的行为,包括数据库连接、安全设置、认证策略等。 5. **CAS认证方式**: CAS支持多种认证方式,如基于用户名/...

    cas-client-3.3.3-release和cas-server-4.2.1-release下载

    4.2.1是这个版本的编号,表明它是CAS的第4个主要版本,第2个次要版本和第1个修正版本。服务器端通常包含以下内容: - `cas-server-webapp`: CAS的Web应用程序,基于Spring Webflow构建,处理用户的登录、验证和其他...

    cas的部署规则

    - CAS服务器收到注销请求后,会从session中移除所有加入单点登录范围内的session ID,并调用各应用接口销毁session中的TGT,同时使浏览器端的TGC失效。 - 下次用户访问任何应用时,流程将重新开始。 #### 四、CAS...

    cas源码.....

    1. `cas-server-3.1.1-release.zip`:这是 CAS 服务器端的源码包,包含了 CAS 服务端的所有组件和配置,包括核心认证模块、票证管理、服务注册、协议实现等。通过对这个包的研究,我们可以了解到 CAS 如何处理用户的...

    cas-server-webapp-4.1.5.war

    标题中的"cas-server-webapp-4.1.5.war"是一个特定的文件名,它表明这是一款基于Java的Web应用程序,使用了CAS(Central Authentication Service)服务的服务器端组件。CAS是一个开源的身份验证框架,它允许用户通过...

    CAS+Shiro实现认证授权

    这通常涉及在服务器端配置用户数据库、服务注册、以及CAS的客户端认证配置。 2. **集成Shiro与CAS**:在客户端应用中,你需要配置Shiro来使用CAS作为认证提供者。这通常涉及到创建一个自定义 Realm 类,该类将Shiro...

    windows下进行单点登录配置操作手册.pdf

    3. **安装Tomcat**: 安装或准备两个Tomcat实例,一个作为服务器端,另一个作为客户端。假设服务器端路径为`D:\tomcat`,客户端路径为`E:\tomcatClient`。 4. **配置SSL**: - **配置hosts文件**: 在`C:\WINDOWS\...

    条件接收系统CAS DVB-CAS

    CAS系统通常由前端(广播端)和终端(接收端)两大部分组成: - **前端**:负责生成加密的授权信息,并对节目数据进行加扰处理。加扰后的数据仅对授权用户有价值,未授权用户无法从中获取有用信息。加密的授权信息...

    单点登录实

    ### 单点登录实现详解——CAS客户端与服务器端配置 #### 一、引言 单点登录(Single Sign-On,简称SSO)是一种常见的身份管理技术,它允许用户通过一次登录即可访问多个应用系统,无需在不同的应用系统之间重复...

    哈雷NMX网管及ProStream-1000操作手册V6.0.pdf

    - **架构概述**:NMX DSM 的核心包括服务器端组件、客户端组件以及数据库管理系统,共同构成了完整的网络管理系统架构。 - **包装内容**:手册详细介绍了系统中包含的软件包、硬件设备以及相关文档资料。 #### 二、...

    Django实现CAS+OAuth2的方法示例

    在服务器端的`settings.py`中,我们需要配置`INSTALLED_APPS`,包括`mama_cas`,并设置`MAMA_CAS_SERVICES`来定义服务的URL和服务回调。此外,我们还需要配置`urls.py`以包含`mama_cas.urls`。在客户端的`settings....

    JEECG 单点登录集成文档(kisso集成)

    第二种:临时cookie又叫会话cookie放在浏览器内存中,浏览器关闭生命周期结束自动失效”。2、单纯不做任何改变而言session更安全,如果cookie采取各种安全保护措施,此时的cookie一样安全。3、cookie轻松实现分布式...

    统一身份认证对外文档

    2. **解析CAS返回的XML格式响应**:CAS返回的响应通常是XML格式的,可以通过解析这个XML文档来获取用户的详细信息。 3. **自定义过滤器**:开发自定义的过滤器来处理CAS返回的票据,并根据票据进行下一步的操作。 ...

    sso单点登录.rar

    常见的服务器端技术有OpenID Connect、OAuth2、CAS等。开发人员需要配置服务器与各个应用之间的信任关系,设置回调URL,处理票据验证逻辑,确保安全传输。 3. SSO客户端实现: "client_1"可能包含了第一个客户端...

    JAVA SSO demo

    - 配置服务器端的URL重定向和安全设置。 2. **Java应用集成**: - 添加CAS客户端库到Java项目中,如`spring-security-cas`。 - 配置Spring Security以使用CAS客户端,包括服务端URL、登录/退出重定向URL等。 3....

Global site tag (gtag.js) - Google Analytics