设为首页 收藏本站
查看: 635|回复: 0

[经验分享] 使用CAS+tomcat搭建单点登录.

[复制链接]

尚未签到

发表于 2017-1-29 13:25:51 | 显示全部楼层 |阅读模式
1 使用软件包,cas-client-3.1.10 cas-server-3.3.5 ,apache-tomcat-6.0.20
2 服务端的安装:
  生成keyStore ,在命令行输入:
keytool -genkey -alias mykey -keyalg RSA -keystore server.keystore
按照提示来:
输入keystore密码:123456
再次输入新密码:123456
您的名字与姓氏是什么?
  [Unknown]:  主机名如果是本机就写localhost,注意这里不要写ip地址,
您的组织单位名称是什么?
  [Unknown]: gxcx
您的组织名称是什么?
  [Unknown]:  gxcx
您所在的城市或区域名称是什么?
  [Unknown]:  beijing
您所在的州或省份名称是什么?
  [Unknown]:  beijing
该单位的两字母国家代码是什么
  [Unknown]:  cn
CN=localhost, OU= gxcx software ltd., O= gxcx, L=beijing,

ST=beijing, C=cn 正确吗?
  [否]:  y
输入<mykey>的主密码
        (如果和 keystore 密码相同,按回车):
在当前目录下可以找到一个文件:server.keystore,其中就包含了自签名的证书。

在%TOMCAT_HOME%目录下新建目录keystore,并拷贝server.keystore到其目录下


修改%TOMCAT_HOME%/conf/server.xml文件。添加https的Connector。
<Connector
           port="8443" minSpareThreads="5" maxSpareThreads="75"
           enableLookups="true" disableUploadTimeout="true"
           acceptCount="100"  maxThreads="200"
           scheme="https" secure="true" SSLEnabled="true"
           keystoreFile="keystore/server.keystore" keystorePass="123456"
           clientAuth="false" sslProtocol="TLS"/>
注意:
      1)keystoreFile指向文件%TOMCAT_HOME%/keystore/server.keystore文

件。
      2)keystorePass就是刚才生成certificate keystore的密码。
      3)测试Https。
访问https://localhost:8443/,提示有不安全的证书,接受证书,看到可亲的tom猫
至此SSL协议配置结束。


2、搭建CAS的服务端

4.1  CAS在tomcat上的发布
1)将下载的server包解压
2)将解压包内的modules文件夹下的cas那个war文件,cas-server-webapp-3.3.5.war 拷贝到 tomcat的 webapps 目录,并更名为 cas.war
可以重新启动 tomcat,然后访问:https://localhost:8443/cas ,如果能出现

正常的 CAS 登录页面,则说明 CAS Server 已经部署成功。


5、搭建CAS客户端

密钥的交换。
1)          服务端密钥的导出
keytool -export -file client.cert -alias mykey -keystore

server.keystore
2)          客户端密钥的导入
将导出的client.cert密钥copy到客户端机器上在客户端机器上运行
keytool -import -trustcacerts -file client.cert -keypass changeit -

keystore "%JAVA_HOME%/jre/lib/security/cacerts" -alias mykey1



在tomcat 下面新建目录,casclient

在web-inf/lib下面加入cas-client-3.1.10的jar.
我这里用了spring 还加入了spring的相关类:
我这里是如下类;
backport-util-concurrent-3.1.jar
cas-client-core-3.1.10.jar
cas-client-integration-atlassian-3.1.10.jar
cas-client-support-distributed-ehcache-3.1.10.jar
cas-client-support-distributed-memcached-3.1.10.jar
commons-collections-3.2.jar
commons-logging-1.1.jar
ehcache-1.5.0.jar
jsr107cache-1.0.jar
lp.txt
servlet-api-2.3.jar
spring-aop.jar
spring-beans.jar
spring-context-support.jar
spring-context.jar
spring-core.jar
spring-jdbc.jar
spring-orm.jar
spring-security-acl-2.0.4.jar
spring-security-core-2.0.4.jar
spring-security-core-tiger-2.0.4.jar
spring-security-taglibs-2.0.4.jar
spring-test.jar
spring-tx.jar
spring-web.jar
xmlsec-1.3.0.jar

spring-security开头的可以不要。

配置文件我附件贴在后面。web.xml
/WEB-INF/classes/spring-appContext.xml 我也贴在后面。

启动后,你访问 http://localhost:8080/secure/目录就会重定向到cas单点登录服务器上,需要你登录以后再访问。
cas缺省的用户名/密码是admin/admin

web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
   version="2.5">

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/classes/spring-appContext.xml</param-value>
  </context-param>


<listener>
<listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>
</listener>


<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
   
  
<filter>
    <filter-name>CAS Authentication Filter</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    <init-param>
      <param-name>targetBeanName</param-name>
      <param-value>casAuthenticationFilter</param-value>
    </init-param>
</filter>

  <filter>
    <filter-name>CAS Validation Filter</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    <init-param>
      <param-name>targetBeanName</param-name>
      <param-value>casValidationFilter</param-value>
    </init-param>
  </filter>

  <filter>
    <filter-name>CAS HttpServletRequestWrapperFilter</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    <init-param>
      <param-name>targetBeanName</param-name>
      <param-value>casHttpServletRequestWrapperFilter</param-value>
    </init-param>
  </filter>



<filter>
      <filter-name>CAS Single Sign Out Filter</filter-name>
     <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>
</filter>
            
<filter-mapping>
      <filter-name>CAS Single Sign Out Filter</filter-name>
      <url-pattern>/*</url-pattern>
</filter-mapping>
            
  <filter-mapping>
  <filter-name>CAS Authentication Filter</filter-name>
    <url-pattern>/secure/*</url-pattern>
  </filter-mapping>

  <filter-mapping>
    <filter-name>CAS Validation Filter</filter-name>
    <url-pattern>/secure/*</url-pattern>
  </filter-mapping>

  <filter-mapping>
    <filter-name>CAS HttpServletRequestWrapperFilter</filter-name>
    <url-pattern>/secure/*</url-pattern>
  </filter-mapping>


</web-app>


spring-appContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

<bean id="casAuthenticationFilter"
    class="org.jasig.cas.client.authentication.AuthenticationFilter">
       <property name ="casServerLoginUrl" value="https://localhost:8443/cas/login"/>
       <property name ="serverName" value="http://localhost:8080"/>
  </bean>

<bean id="casValidationFilter"
      class="org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter">
    <property name="ticketValidator">
      <ref bean="Cas20ServiceTicketValidator"/>
    </property>
    <property name="useSession" value="true"/>
    <property name="serverName" value="http://localhost:8080"/>
    <property name="redirectAfterValidation" value="true"/>
  </bean>
     
  <bean id="Cas20ServiceTicketValidator" class="org.jasig.cas.client.validation.Cas20ServiceTicketValidator">
    <constructor-arg index="0" value="https://localhost:8443/cas" />
  </bean>   

  <bean id="casHttpServletRequestWrapperFilter" class="org.jasig.cas.client.util.HttpServletRequestWrapperFilter"/>
</beans>

secure 下面的测试页面 index.jsp

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<%@ page contentType="text/html; charset=UTF-8" %>
<head>
<body>
<%="Hello"%>
你登录了;;<%= request.getRemoteUser() %>
</body>
</html>

可以用 request.getRemoteUser()获得用户登录名

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-334945-1-1.html 上篇帖子: eclipse create server to config tomcat 下篇帖子: 通过配置tomcat服务器压缩页面
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表