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

[经验分享] cas与tomcat简单搭建SSO

[复制链接]

尚未签到

发表于 2017-1-29 09:14:04 | 显示全部楼层 |阅读模式
  CAS在tomcat6.0.18下的SSO
(一) CAS实现原理
术语:
  CAS(Central Authentication Service)
TGT(Ticket Granting Ticket)
ST(Service Ticket)
PGT(Proxy Granting Ticket)
  从结构上看,CAS 包含两个部分: CAS Server 和 CAS Client。CAS Server 需要独立部署,主要负责对用户的认证工作;CAS Client 负责处理对客户端受保护资源的访问请求,需要登录时,重定向到 CAS Server。图1 是 CAS 最基本的协议过程:
  图 1. CAS 基础协议
  
CAS Client 与受保护的客户端应用部署在一起,以 Filter 方式保护受保护的资源。对于访问受保护资源的每个 Web 请求,CAS Client 会分析该请求的 Http 请求中是否包含 Service Ticket,如果没有,则说明当前用户尚未登录,于是将请求重定向到指定好的 CAS Server 登录地址,并传递 Service (也就是要访问的目的资源地址),以便登录成功过后转回该地址。用户在第 3 步中输入认证信息,如果登录成功,CAS Server 随机产生一个相当长度、唯一、不可伪造的 Service Ticket,并缓存以待将来验证,之后系统自动重定向到 Service 所在地址,并为客户端浏览器设置一个 Ticket Granted Cookie(TGC),CAS Client 在拿到 Service 和新产生的 Ticket 过后,在第 5,6 步中与 CAS Server 进行身份合适,以确保 Service Ticket 的合法性。
  在该协议中,所有与 CAS 的交互均采用 SSL 协议,确保,ST 和 TGC 的安全性。协议工作过程中会有 2 次重定向的过程,但是 CAS Client 与 CAS Server 之间进行 Ticket 验证的过程对于用户是透明的。
  另外,CAS 协议中还提供了 Proxy (代理)模式,以适应更加高级、复杂的应用场景,具体介绍可以参考 CAS 官方网站上的相关文档。
  
复杂的应用场景,具体介绍可以参考 CAS 官方网站上的相关文档。
  (二) 需要介质
1、 客户端介质cas-client-java-2.1.1.zip
  2、 服务端介质cas-server-3.3.3-release.zip
  3、 Tomcat6.0
  4、 JDK6.0
  (三) 配置步骤
1、安装JDK6.0与tomcat6.0(略)
2、配置Java环境变量和tomcat环境变量
(1) JDK环境变量配置:
  如果你的JDK安装在C盘里,如:C:\j2sdk1.4.2_05,那么就在系统变量里(当然也可以在用户变量里)点新建:
  变量名:JAVA_HOME
  变量值:C:\j2sdk1.4.2_05
  再次点新建:
  变量名:classpath
  变量值:.;%JAVA_HOME%\lib\dt.jar;
  并在path里加入 .;%JAVA_HOME%\bin;
  测试:
  启动:运行cmd
  Dos命令下分别输入Java和JavaC后回车
  
(2) Tomcat环境变量配置:
  如果你的Tomcat安装在C盘里,如:F:\Tomcat50(在这里切记一下,安装Tomcat时,在其字母周围
  一定不要存在空格,否则最后可能导致配置不成功)
  同样,在系统变量里点新建:
  变量名:CATALINA_BASE
  变量值:C:\apache-tomcat-6.0.18\apache-tomcat-6.0.18
  再次新建:
  变量名:CATALINA_HOME
  变量值:C:\apache-tomcat-6.0.18\apache-tomcat-6.0.18
  点击确定后在classpath中加入%CATALINA_HOME%\common\lib\servlet-api.jar;
  在path中加入%CATALINA_HOME%\lib;
  测试:
  进入%CATALINA_HOME%bin
  运行startup.bat
  (四)配置ssl协议
背景:作为服务机与客户机通信的协议
  步骤:
  3.1生成keystore
  在命令行下使用如下命令:
  C:\Documents and Settings\administrator>keytool -genkey -alias mykey -keyalg RSA -keystore server.keystore
  输入keystore密码:123456
  再次输入新密码:123456
  您的名字与姓氏是什么?
  [Unknown]: 主机名或者IP最好是做了host映射的主机名
  您的组织单位名称是什么?
  [Unknown]: capinfo
  您的组织名称是什么?
  [Unknown]: capinfo
  您所在的城市或区域名称是什么?
  [Unknown]: beijing
  您所在的州或省份名称是什么?
  [Unknown]: beijing
  该单位的两字母国家代码是什么
  [Unknown]: cn
  CN=fengqingyu, OU=capinfo software ltd., O=capinfo, L=beijing, ST=beijing, C=cn 正确吗?
  [否]: y
  输入<mykey>的主密码
  (如果和 keystore 密码相同,按回车):
  在C:\Documents and Settings\new下可以找到一个文件:server.keystore,其中就包含了自签名的证书。
  注意:
  这里要求certificate keystore 和certificate的密码一致,此为Tomcat的约束。
  3.2添加keystore目录
  在%TOMCAT_HOME%目录下新建目录keystore,并拷贝server.keystore到其目录下。
  3.3修改配置文件
  修改%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猫
  4)访问的时候localhost最好换成你的主机名。
  至此SSL协议配置结束。
  4、搭建CAS的服务端
4.1 CAS在tomcat上的发布
  1)将下载的cas-server-3.3.3-release.zip解压
  2)将解压包内的modules文件夹下的cas-server-webapp-3.3.3.war 拷贝到 tomcat的 webapps 目录,并更名为 cas.war
  可以重新启动 tomcat,然后访问:https://localhost:8443/cas ,如果能出现正常的 CAS 登录页面,则说明 CAS Server 已经部署成功。
  5、 搭建CAS客户端
1、 配置客户端服务器的HTTPS协议方法同服务端。
  2、 客户端的安装
  1) 将cas-client-java-2.1.1.zip解压并将\cas-client-java-2.1.1\dist下的casclient.jar拷贝到你所要应用的项目的WEB-INF\lib目录下
  2) 将\cas-client-java-2.1.1\lib下的所有包copy到WEB-INF\lib目录下
  3、 密钥的交换。
  1) 服务端密钥的导出
  C:\Documents and Settings\administrator>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
  注意:
  导入的部位是
  JAVA_HOME的jre目录下,不是跟jdk同级的jre目录
例如: C:/Program Files/Java/jdk1.6.0_03/jre/lib/security/cacerts
  4、 配置文件的修改
  1) 修改webapps\examples\WEB-INF\web.xml,加入servlet filter实现SSO检查。
  注:该web.xml为你要加入SSO功能的项目下的web.xml文件,本示例为使用tomcat下自带的example项目
  <filter>
  <filter-name>CASFilter</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://cas02.com.cn:8443/cas/login</param-value>
  </init-param>
  <init-param>
  <param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name>
  <param-value>https://cas02.com.cn:8443/cas/proxyValidate</param-value>
  </init-param>
  <init-param>
  <param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name>
  <param-value>cas02.com.cn: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>
  </filter>
  <filter-mapping>
  <filter-name>CASFilter</filter-name>
  <url-pattern>/*</url-pattern>
  </filter-mapping>
  注意:本测试案例的服务端与客户端在同台机器下所以地址栏中全使用了同一主机名,如客户机与服务机在不同机器上,则第一二两个表红色的主机名要换成服务机的主机名,第三个标蓝色的主机名为客户机的主机名。
  6、 测试SSO
1)通过IE访问http://主机名:8080后进入TOMCAT页面后选择example会跳转到CAS得登录面输入相同的用户名密码进入example的登录后页面,至此该简单的SSO结束
  本文转自:http://blog.csdn.net/xinyucool2006/archive/2009/11/13/4808040.aspx

运维网声明 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-334761-1-1.html 上篇帖子: 入侵Tomcat服务器一次实战 下篇帖子: tomcat架构分析 (JNDI体系绑定)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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