http://www.cnblogs.com/secsea/p/5177284.html
使用工具
maven-3.3.9
cas-4.1.4
Tomcat-7.0.57-win-x64
cas-sample-java-webapp
一、Hello cas
1、下载Tomcat,解压;修改其server.xml,增加对SSL支持(具体百度):
1 <Connector SSLEnabled="true" acceptCount="100" clientAuth="false" 2 disableUploadTimeout="true" enableLookups="false" maxThreads="25" 3 port="8443" keystoreFile="G:/work/xxx/tomcat.keystore" keystorePass="YOUR PASSWORD HERE" 4 protocol="org.apache.coyote.http11.Http11NioProtocol" scheme="https" 5 secure="true" sslProtocol="TLS" />
1、从https://github.com/Jasig/cas/releases 下载cas-server对应的版本;
2、解压,使用maven命令mvn package对cas进行编译打包,这里可能会出现2个问题:
a.单元测试不通过==》尝试加上-Dmaven.test.skip=true跳过;
b.编译到一半编译不过==》进入cas-server-core,执行命令mvn install -Dmaven.test.skip=true先将core编译为jar包后,再进行。
3、将打包好的cas-server-webapp下的war包复制到tomcat下,运行tomcat先试试吧;
4、使用账号casuser,密码Mellon登录,成功
5、从https://github.com/Jasig/java-cas-client 下载java-cas-client,如上步骤解压编译,编译后不再操作,待用。
6、从https://github.com/UniconLabs/cas-sample-java-webapp 下载cas-sample-java-webapp,如上步骤解压编译,编译后不再操作,待用。
二、server配置数据库连接认证
上面我们采用的是默认配置,登录账号实际上是在cas/WEB-INF/deployerConfigContext.xml配置写死的。当然不符合我们大多数的实际使用场景。现在我们将其改为连接Mysql数据库验证。
1、回到我们刚刚maven编译的cas目录下,将cas-server-support-jdbc/target/cas-server-support-jdbc-4.1.4.jar 复制到tomcat/webapp/cas/WEB-INF/lib下,再复制mysql-connector-java-5.0.8-bin.jar到tomcat/webapp/cas/WEB-INF/lib下。当然这些你可以在cas-server-webapp下的pom.xml进行依赖添加再进行打包编译。
2、修改cas/WEB-INF/deployerConfigContext.xml,这里需要注意修改以下地方:
1 <bean id="primaryAuthenticationHandler" 2 class="org.jasig.cas.authentication.AcceptUsersAuthenticationHandler"> 3 <property name="users"> 4 <map> 5 <entry key="casuser" value="Mellon"/> 6 </map> 7 </property> 8 </bean>
注释以上代码,增加如下代码
1 <bean id="dataSource" 2 class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 3 <property name="driverClassName" value="com.mysql.jdbc.Driver" /> 4 <property name="url" 5 value="jdbc:mysql://10.3.64.87:3306/cas?characterEncoding=utf-8&autoReconnect=true" /> 6 <property name="username" value="root" /> 7 <property name="password" value="123456" /> 8 </bean> 9 10 <bean id="primaryAuthenticationHandler" 11 class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler" 12 p:dataSource-ref="dataSource" 13 p:passwordEncoder-ref="MD5PasswordEncoder" 14 p:sql="select password from user_info where user_name=?" /> 15 16 <bean id="MD5PasswordEncoder" class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder"> 17 <constructor-arg index="0"> 18 <value>MD5</value> 19 </constructor-arg> 20 </bean>
这里我们增加了MySQL的数据连接dataSource,并编写了SQL查询用户认证信息。
修改完成,我们来测试一下能否通过MySQL进行认证。启动tomcat。
登录成功,我们已经成功和MYSQL连接成功了。
三、添加客户端
这里我们将用到第一步里面待用的cas-sample-java-webapp。
1、将编译好的cas-sample-java-webapp/target/cas-sample-java-webapp.war部署到tomcat下;
2、找到tomcat/webapp/cas-sample-java-webapp/WEB-INF/web.xml,删除以下代码
1 <init-param> 2 <param-name>redirectAfterValidation</param-name> 3 <param-value>true</param-value> 4 </init-param> 5 <init-param> 6 <param-name>useSession</param-name> 7 <param-value>true</param-value> 8 </init-param> 9 <init-param> 10 <param-name>acceptAnyProxy</param-name> 11 <param-value>true</param-value> 12 </init-param> 13 <init-param> 14 <param-name>proxyReceptorUrl</param-name> 15 <param-value>/client/proxyUrl</param-value> 16 </init-param> 17 <init-param> 18 <param-name>proxyCallbackUrl</param-name> 19 <param-value>https://zhuajindian.com:8443/client/proxyUrl</param-value> 20 </init-param>
将其中的多个casServerUrlPrefix、serverName、casServerLoginUrl替换成你自己的URL。
3、修改deployerConfigContext.xml,找到下面的代码
1 <bean id="serviceRegistryDao" class="org.jasig.cas.services.JsonServiceRegistryDao" 2 c:configDirectory="${service.registry.config.location:classpath:services}" />
替换为
1 <!-- 注册服务 --> 2 <bean id="serviceRegistryDao" class="org.jasig.cas.services.InMemoryServiceRegistryDaoImpl" 3 p:registeredServices-ref="registeredServicesList" /> 4 5 <util:list id="registeredServicesList"> 6 <bean class="org.jasig.cas.services.RegexRegisteredService" 7 p:id="0" p:name="HTTP and IMAP" p:description="Allows HTTP(S) and IMAP(S) protocols" 8 p:serviceId="^(https?|http?|imaps?)://.*" p:evaluationOrder="10000001" /> 9 </util:list>
这里的serviceId就是你告诉cas服务器端,通过这个正则来判断,符合这个正则表达式的,就是我们自己的客户端。当然这里泛匹配了,你可以根据实际情况来。
4、重启tomcat,访问刚刚填写在serverName处的URL试试
可以看到,我们已经能够成功获取到Authenticated UserId,也就是登录的用户名。这样,我们的简单demo就完成了。
四、自定义登录后的可传递字段,方便客户端读取
在我们的应用场景中,客户端需要的参数不仅仅是用户名。还需要诸如userid等各类信息,那么,接下来我们就来配置获取自定义字段。
1、找到cas/WEB-INF/deployerConfigContext.xml,注释以下代码:
1 <bean id="attributeRepository" class="org.jasig.services.persondir.support.NamedStubPersonAttributeDao" 2 p:backingMap-ref="attrRepoBackingMap" /> 3 4 <util:map id="attrRepoBackingMap"> 5 <entry key="uid" value="uid" /> 6 <entry key="eduPersonAffiliation" value="eduPersonAffiliation" /> 7 <entry key="groupMembership" value="groupMembership" /> 8 <entry> 9 <key><value>memberOf</value></key> 10 <list> 11 <value>faculty</value> 12 <value>staff</value> 13 <value>org</value> 14 </list> 15 </entry> 16 </util:map>
替换为:
1 <bean id="attributeRepository" class="org.jasig.services.persondir.support.jdbc.SingleRowJdbcPersonAttributeDao"> 2 <constructor-arg index="0" ref="dataSource" /> 3 <constructor-arg index="1" value="SELECT id,user_name,mobile,cid FROM user_info WHERE {0}" /> 4 <property name="queryAttributeMapping"> 5 <map> 6 <entry key="username" value="user_name" /> 7 </map> 8 </property> 9 <property name="resultAttributeMapping"> 10 <map> 11 <entry key="id" value="userId" /> 12 <entry key="user_name" value="username" /> 13 <entry key="mobile" value="mobile" /> 14 <entry key="cid" value="cid" /> 15 </map> 16 </property> 17 </bean>
其中的sql只需要写前半部分,如示例,entry的key代表上面sql查询的字段,value代表服务端传给客户端的参数名,客户端可以通过value取出对应的值。
2、修改cas/WEB-INF/view/jsp/protocol/2.0/casServiceValidationSuccess.jsp,增加下面这段
1 <cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas'> 2 <cas:authenticationSuccess> 3 <cas:user>${fn:escapeXml(principal.id)}</cas:user> 4 <!-- 这段 --> 5 <c:if test="${fn:length(assertion.chainedAuthentications[fn:length(assertion.chainedAuthentications)-1].principal.attributes) > 0}"> 6 <cas:attributes> 7 <c:forEach var="attr" items="${assertion.chainedAuthentications[fn:length(assertion.chainedAuthentications)-1].principal.attributes}"> 8 <cas:${fn:escapeXml(attr.key)}>${fn:escapeXml(attr.value)}</cas:${fn:escapeXml(attr.key)}> 9 </c:forEach> 10 </cas:attributes> 11 </c:if> 12 <!-- 这段 end--> 13 <c:if test="${not empty pgtIou}"> 14 <cas:proxyGrantingTicket>${pgtIou}</cas:proxyGrantingTicket> 15 </c:if> 16 <c:if test="${fn:length(chainedAuthentications) > 0}"> 17 <cas:proxies> 18 <c:forEach var="proxy" items="${chainedAuthentications}" varStatus="loopStatus" begin="0" end="${fn:length(chainedAuthentications)}" step="1"> 19 <cas:proxy>${fn:escapeXml(proxy.principal.id)}</cas:proxy> 20 </c:forEach> 21 </cas:proxies> 22 </c:if> 23 </cas:authenticationSuccess> 24 </cas:serviceResponse>
3、重启tomcat,登录看效果:
上面配置的4个参数这里显示了3个,原来mobile字段是因为没有值,所以他默认就不传递了。
相关推荐
cas4.1.x集成cas4.1.x集成cas4.1.x集成cas4.1.x集成cas4.1.x集成cas4.1.x集成cas4.1.x集成cas4.1.x集成cas4.1.x集成cas4.1.x集成cas4.1.x集成cas4.1.x集成cas4.1.x集成cas4.1.x集成cas4.1.x集成cas4.1.x集成cas4.1.x...
cas4.1.x 集成 mysql,ldap,redis(session和票据),写了简单的两个客户端 democas4.1.x 集成 mysql,ldap,redis(session和票据),写了简单的两个客户端 democas4.1.x 集成 mysql,ldap,redis(session和票据),写了简单...
- CAS的配置文件(如`cas.properties`或`applicationContext.xml`)需要根据上述集成情况进行调整,包括数据库连接、LDAP设置以及Redis客户端配置。 - 部署时,需要确保所有依赖服务(MySQL、LDAP、Redis)正常...
3. **配置服务器**:修改`cas.properties`配置文件,设置数据库连接、服务器端口等信息。 4. **部署CAS**:将CAS服务器打包成WAR文件,部署到应用服务器(如Tomcat)。 5. **客户端集成**:在每个服务提供商项目中...
4. **配置灵活性**:`casclient.jar`允许开发者通过XML配置文件(如`cas.properties`)自定义CAS客户端的行为,包括CAS服务器的URL、服务定义、安全设置等。 5. **安全性增强**:除了基本的身份验证,`casclient....
予org.jasig.cas.client.util.CommonUtils 加入 public static void disableSSLVerification(){ try { // Create a trust manager that does not validate certificate chains TrustManager[] ...
本项目基于SpringBoot、CAS5.x、Shiro和Pac4j实现了SSO集成,下面将详细阐述这些技术组件以及它们在SSO中的作用。 1. **SpringBoot** SpringBoot是Spring框架的一个子项目,它简化了Spring应用的初始搭建和运行...
cas.server.prefix=${cas.server.name}/cas cas.jdbc.url=jdbc:mysql://your-mysql-host:3306/cas?useSSL=false&serverTimezone=UTC cas.jdbc.username=casuser cas.jdbc.password=mypassword cas.jdbc.driver-class...
cas6.x需要使用jdk11版本,目前cas5.3.15.1是8的最高版本,但是稳定性cas-5.3.14.war最佳,本次基于jdk8-201编译
标题中的"CAS4.x-execution-rce"是指在CAS(Central Authentication Service)4.1.x到4.2.x版本中的一个远程代码执行漏洞。CAS是一个开源的身份验证框架,广泛用于Web应用程序的安全性,提供单一登录服务。这个漏洞...
7. **配置文件修改**: 集成以上组件需要对CAS的配置文件进行适当修改,比如`cas.properties`或`cas-server-support-ldap.xml`等,以确保系统能正确连接到MySQL、LDAP和Redis。 8. **测试与调试**: 集成后,需要进行...
解决普元EOS报错:edu.yale.its.tp.cas.client.IContextInit 下载后需jar到lib里面且单击右键在属性一栏的弹出框内添加该jar包即可解决爆粗
在Win XP 32 位本机环境,利用CAS 5.1.X,对LDAP、JDBC 认证机制的多种认证模式进行了单点 登录系统(SSO)的配置试验,并采用Java 和Python 两种客户端作了测试,同时给出了配置流程、以 及个人在20 天的配置试验...
casServer.keystore
单点登陆cas5.3.war放到tomcat直接使用!
- 配置`cas.properties`(如果存在)以指示CAS服务器使用数据库认证。 - 在每个需要SSO功能的应用中集成`cas-client`,配置客户端以与你的CAS服务器通信。 - 可能还需要配置CAS服务器的认证处理器,以处理从数据库...
总之,`cas-overlay-template-5.2.x.zip` 是一个用于快速搭建和定制CAS 5.2.x版本服务器的工具,通过Maven构建流程,你可以生成一个可以直接部署的`cas.war`文件,从而实现自定义的单点登录服务。对于需要为多个应用...
对于数据库连接,开发者需要在该文件中查找并修改相关的属性,如`cas.server.name`、`cas.jdbc.url`、`cas.jdbc.username`、`cas.jdbc.password`等。 6. **系统集成**:除了基本的认证功能,CAS还提供了丰富的API和...