紧接上一篇
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的时候出现乱码。)有兴趣的可以尝试解决一下。
分享到:
相关推荐
2. CAS服务器与WAS服务器之间的SSL信任配置:为了确保CAS服务器与WAS服务器之间的通信安全,需要建立信任关系。这通常涉及到证书的导入和配置,以确保WAS服务器信任CAS服务器的SSL证书。 3. CAS Client端在WAS...
本压缩包文件“cas-server-3.5.2”提供了CAS服务器端的源代码,有助于开发者深入理解CAS的工作原理并进行定制化开发。 首先,让我们了解一下CAS的基本工作流程: 1. **预认证阶段**:当用户尝试访问一个受CAS保护...
1. **配置OAuth2.0服务**:在CAS服务器端,需要配置OAuth2.0的相关参数,如客户端ID、客户端密钥、授权端点、令牌端点等,以支持OAuth2.0协议。 2. **创建OAuth2.0客户端**:在第三方服务(如微博)上注册应用,...
4. **CAS配置**: 在源码中,你会看到服务器和客户端的配置文件,如`cas.properties`,它们定义了CAS的行为,包括数据库连接、安全设置、认证策略等。 5. **CAS认证方式**: CAS支持多种认证方式,如基于用户名/...
4.2.1是这个版本的编号,表明它是CAS的第4个主要版本,第2个次要版本和第1个修正版本。服务器端通常包含以下内容: - `cas-server-webapp`: CAS的Web应用程序,基于Spring Webflow构建,处理用户的登录、验证和其他...
- CAS服务器收到注销请求后,会从session中移除所有加入单点登录范围内的session ID,并调用各应用接口销毁session中的TGT,同时使浏览器端的TGC失效。 - 下次用户访问任何应用时,流程将重新开始。 #### 四、CAS...
1. `cas-server-3.1.1-release.zip`:这是 CAS 服务器端的源码包,包含了 CAS 服务端的所有组件和配置,包括核心认证模块、票证管理、服务注册、协议实现等。通过对这个包的研究,我们可以了解到 CAS 如何处理用户的...
标题中的"cas-server-webapp-4.1.5.war"是一个特定的文件名,它表明这是一款基于Java的Web应用程序,使用了CAS(Central Authentication Service)服务的服务器端组件。CAS是一个开源的身份验证框架,它允许用户通过...
这通常涉及在服务器端配置用户数据库、服务注册、以及CAS的客户端认证配置。 2. **集成Shiro与CAS**:在客户端应用中,你需要配置Shiro来使用CAS作为认证提供者。这通常涉及到创建一个自定义 Realm 类,该类将Shiro...
3. **安装Tomcat**: 安装或准备两个Tomcat实例,一个作为服务器端,另一个作为客户端。假设服务器端路径为`D:\tomcat`,客户端路径为`E:\tomcatClient`。 4. **配置SSL**: - **配置hosts文件**: 在`C:\WINDOWS\...
CAS系统通常由前端(广播端)和终端(接收端)两大部分组成: - **前端**:负责生成加密的授权信息,并对节目数据进行加扰处理。加扰后的数据仅对授权用户有价值,未授权用户无法从中获取有用信息。加密的授权信息...
### 单点登录实现详解——CAS客户端与服务器端配置 #### 一、引言 单点登录(Single Sign-On,简称SSO)是一种常见的身份管理技术,它允许用户通过一次登录即可访问多个应用系统,无需在不同的应用系统之间重复...
- **架构概述**:NMX DSM 的核心包括服务器端组件、客户端组件以及数据库管理系统,共同构成了完整的网络管理系统架构。 - **包装内容**:手册详细介绍了系统中包含的软件包、硬件设备以及相关文档资料。 #### 二、...
在服务器端的`settings.py`中,我们需要配置`INSTALLED_APPS`,包括`mama_cas`,并设置`MAMA_CAS_SERVICES`来定义服务的URL和服务回调。此外,我们还需要配置`urls.py`以包含`mama_cas.urls`。在客户端的`settings....
第二种:临时cookie又叫会话cookie放在浏览器内存中,浏览器关闭生命周期结束自动失效”。2、单纯不做任何改变而言session更安全,如果cookie采取各种安全保护措施,此时的cookie一样安全。3、cookie轻松实现分布式...
2. **解析CAS返回的XML格式响应**:CAS返回的响应通常是XML格式的,可以通过解析这个XML文档来获取用户的详细信息。 3. **自定义过滤器**:开发自定义的过滤器来处理CAS返回的票据,并根据票据进行下一步的操作。 ...
常见的服务器端技术有OpenID Connect、OAuth2、CAS等。开发人员需要配置服务器与各个应用之间的信任关系,设置回调URL,处理票据验证逻辑,确保安全传输。 3. SSO客户端实现: "client_1"可能包含了第一个客户端...
- 配置服务器端的URL重定向和安全设置。 2. **Java应用集成**: - 添加CAS客户端库到Java项目中,如`spring-security-cas`。 - 配置Spring Security以使用CAS客户端,包括服务端URL、登录/退出重定向URL等。 3....