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

[经验分享] cas在tomcat实现单点登录

[复制链接]
发表于 2017-1-29 09:53:46 | 显示全部楼层 |阅读模式
  使用cas在tomcat实现单点登录(精)2009-04-01 08:17cas是目前非常流行的企业应用SSO解决方案。本文就cas的配置及使用展开讨论,下图为cas原理:
  一、软件准备:
  1、apache-tomcat-6.0.18。
  2、cas-server-3.3.1-release.zip(cas服务器)。
  3、cas-client-2.0.11.zip。
  
二、配置tomcat的ssl
  1、生成keystore证书
  keytool -genkey -keyalg RSA -alias tomcatsso -dname "cn=localhost" -keystore server.keystore -storepass changeit
  cn表示一个主机名或者一个域名,本机用localhost表示。
  alias表示插入到证书中的别名。
  命令执行完后,在当前目录生成server.keystore证书文件,注意,该文件一定要保护好,后面配置时需要用到。为了后面方便导入,将该文件直接生成在C:Program FilesJavajdk1.6.0_10jrelibsecurity目录下,该目录是我的jdk安装目录,注意:在windows下用导入证书时,目录名中间不能有空格,为了避免导入麻烦,jdk最好安装在没有空格的目录里。
  2、导出证书
  keytool -export -alias tomcatsso -file server.cer -keystore server.keystore -storepass changeit
  该命令执行完后在当前目录生成证书文件server.cer
  3、将server.cer导入到jdk的信任库中
  在导入之前可以看看信任库中有什么证书
  keytool -list -keystore cacerts -storepass changeit
  执行完该命令后显示所有证书信息。默认情况下jdk1.6 u10的cacerts信任库中有59条证书信息。
  如果信任库中已经有自己的证书信息了,可以用下面的命令删除:
  keytool -delete -alias tomcatsso -keystore cacerts -keypass changeit
  需要指定tomcatsso别名。
  导入证书用一下命令:
  keytool -import -alias tomcatsso -file server.cer -keystore cacerts -storepass changeit
执行结果如下:
  以上就是tomcat中配置ssl的全部步骤。
  
三、打开tomcat的https
  打开%CATALINA_HOME%/conf/server.xml,找到如下内容:
  <!--
    <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" />
    -->
  将其换成如下内容
  <Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS"
      keystorePass="changeit" keystoreFile="C:server.keystore"/>
  注意红色部分,我将证书文件拷贝到C盘根下了,不过这不是必须的,我只是为了让目录结构尽量短些。
  如果一切顺利,启动tomcat,在浏览器中输入https://localhost:8443/,将会看到tomcat启动页面,说明tomcat的ssl已经配置成功。
  四、配置cas server
  1、解压cas-server-3.3.1-release.zip,找到cas-server-webapp-3.3.1.war,重命名为cas.war,
  将其拷贝到tomcatwebapps下,启动tomcat,生成cas目录,在cas的WEB-INF下的lib目录中拷贝如下jar包:
  cas-server-support-jdbc-3.3.1.jar(该文件也在cas-server-3.3.1-release.zip中)
  commons-dbcp.jar
  commons-pool.jar
  spring.jar(必须的)
  根据你的数据库的不同,再下个其中拷贝对应数据库的jdbc驱动,本文使用mysql,则拷贝
  mysql-connector-java-5.0.5-bin.jar
  
2、配置cas的deployerConfigContext.xml
  配置之前需要建立用户表:
  打开cas/WEB-INF,打开deployerConfigContext.xml,先加入一个bean:
  <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://localhost:3306/mydata</value>
     </property>
     <property name="username">
          <value>root</value>
     </property>
     <property name="password">
          <value>111111</value>
     </property>
</bean>
然后向下找到<bean
      class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />
  将其注释掉,添加如下配置:
  <bean id="SearchModeSearchDatabaseAuthenticationHandler"
      class="org.jasig.cas.adaptors.jdbc.SearchModeSearchDatabaseAuthenticationHandler"
      abstract="false" lazy-init="default"
                       autowire="default" dependency-check="default">
<property name="tableUsers">
   <value>t_users</value><!--表的名字-->
</property>
<property name="fieldUser">
   <value>username</value><!--用户名对应的字段名-->
</property>
<property name="fieldPassword">
   <value>password</value><!--口令对应的字段名-->
</property>
<property name="dataSource" ref="casDataSource" />
</bean>
cas server到此配置完毕,启动tomcat,在地址栏输入:https://localhost:8443/cas/login
  不出意外,将出现登陆窗口,如果前面数据库中有数据,如用户名为xhd,口令为111111,则在该登录页面输入,点击登录后将显示登陆成功的页面。
  五、配置cas客户端
  1、在myeclipse中建立一个web project,在web.xml中添加如下内容:
  <filter>
    <filter-name>CAS Filter</filter-name>
    <filter-class>edu.yale.its.tp.cas.client.filter.CASFilter</filter-class>
    <init-param>
      <param-name>edu.yale.its.tp.cas.client.filter.loginUrl</param-name>
      <param-value>https://localhost:8443/cas/login</param-value>
    </init-param>
    <init-param>
      <param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name>
      <param-value>https://localhost:8443/cas/serviceValidate</param-value>
    </init-param>
    <init-param>
      <param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name>
      <param-value>localhost:8080</param-value>
    </init-param>
    <init-param>
      <param-name>edu.yale.its.tp.cas.client.filter.wrapRequest</param-name>
      <param-value>true</param-value>
    </init-param>(1)
</filter>
<filter-mapping>
    <filter-name>CAS Filter</filter-name>
    <url-pattern>/*</url-pattern>(2)
</filter-mapping>
  注意:(1)部分表示在cas server登录成功后,可以自动跳转到客户端访问的页面。
  (2)部分表示客户端的所有资源都将被保护,也就是说当客户端访问的任何页面都将被cas验证。
  2、解压cas-client-2.0.11.zip,在cas-client-2.0.11.zipcas-client-2.0.11javalib下找到casclient.jar,将其拷贝到客户应用的WEB-INFlib下。
  好了,启动tomcat,体验你的辛苦带来的乐趣吧。
  
参考:
  使用 CAS 在 Tomcat 中实现单点登录
  http://www.ibm.com/developerworks/cn/opensource/os-cn-cas/index.html

运维网声明 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-334796-1-1.html 上篇帖子: JDBC连接池--tomcat设置与实现 下篇帖子: 启动Tomcat报error:filterStart 处理方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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