• CAS java client配置


    http://1185734295.iteye.com/blog/1997263

    JavaTomcatEclipseJDKSSO .

    SSO,即Single sign on/off,单点登录/退出。

    CAS,全称JA-SIG Central Authentication Service,实现SSO的开源项目。



    说明

    CAS的相关文档在网上可谓铺天盖地,可是对于企图搭架构起CAS服务的新手,往往会发现,介绍理论的文章没有结合操作;介绍操作的文章又缺胳膊断腿,并不能真正按部就班的架构起一个完整的单点登录/退出的服务。

    本文就将以操作步骤为主,尽可能完整的讲述一个cas的客户端和服务端在tomcat下部署和配置的过程,至于理论知识,请读者自行搜索,或者参考文章末尾的参考资料。


    环境

    Windows XP

    JDK1.5

    Tomcat6.0

    准备1

    安装JDK,eclipse,tomcat

    准备2

    到CAS官方站点下载CAS的客户端和服务器端

    官方地址为:http://www.ja-sig.org/products/cas/

    下载页面为:http://www.ja-sig.org/products/cas/downloads/index.html

    到下载页面下载以下3个zip包:

    第一个,CAS Server,这个是CAS的服务器端(当前最新版本是3.3.1)

    第二个,JA-SIGCAS Java Client,这个是官方开发的CAS的客户端,用于单点退出。特别注意事项:当前只有这个客户端(JA-SIGCAS Java Client)的3.1.2及以上版本支持单点退出(当前最新版本是3.1.3)

    第三个,Yale CAS Client,这个是耶鲁大学开发的CAS的客户端,用于单点登录,不支持单点退出(当前最新版本是2.0.11)

    下载后的ZIP包安放于c: esourcecas目录下,分别解压于当前目录。


    准备工作结束,开始正式操作。

    步骤1:制作密钥

    开始-运行-CMD

    先测试一下,键入:(键入尖括号右面的代码。尖括号不要键入,下同)

    >keytool

    如果没有出现帮助说明,说明Path没有配置,如何配置不会的自己baidu。

    配置好了重新打开CMD窗口,转到c: esourcecas目录下。

    怎么转?好吧,不会的按照下面的代码键入:

    >c:

    >cd

    >cd resourcecas

    接下来开始生成密钥,键入:

    >keytool -genkey -alias tomcat -keystore ./mykeystore -keyalg RSA -validity 2000

    password:changeit

    Common Name/Your Name:localhost

    剩下的随便输入

    确认,输入"yes",中文的话输入"是"

    最后,使用密码相同,直接回车

    操作成功的话,会在c: esourcecas目录下产生一个mykeystore的文件

    继续键入:

    >keytool -export -alias tomcat -keystore ./mykeystore -file server.crt

    Keystore password:changeit

    操作成功的话,会在c: esourcecas目录下产生一个server.crt的文件

    继续键入:

    >keytool -import -alias tomcat -file ./server.crt -keystore %JAVA_HOME%/jre/lib/security/cacerts

    Keystore password:changeit

    特别说明:这个%JAVA_HOME%是指tomcat需要使用的JDK,当然,如果按照本文后面的用eclipse里配置的tomcat, 那%JAVA_HOME%就是eclipse中tomcat所配置的JDK,如果你配到其他的jdk上,到后面实际访问服务端的时候会出现异 常:unable to find valid certification path to requested target

    tomcat所配置的JDK是哪个?不知道?查看eclipse中tomcat所配置的JDK的方法:

    Eclipse下菜单window-preperences-myEclipse-servers-tomcat-tomcat6-jdk- tomcat JDK name,这个tomcat JDK name对应的是window-preperences-java-installed JREs下的name属性,其对应的location就是jdk的路径了。

    至此,步骤1完成。

    步骤2:配置tomcat

    打开%TOMCAT_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="HTTP/1.1" SSLEnabled="true"

           maxThreads="150" scheme="https" secure="true"

           clientAuth="false" sslProtocol="TLS"

               keystoreFile="c:/resource/cas/mykeystore "

           keystorePass="changeit"/>

    注意事项:其中的keystoreFile="c:/resource/cas/mykeystore" ,配置上后此文件不可被删除,不然tomcat会报错:找不到此文件。

    保存关闭文件,步骤2完成。

    步骤3:配置CAS服务端

    在c: esourcecascas-server-3.3.1-releasecas-server-3.3.1modules目录 下,有个cas-server-webapp-3.3.1.war的war包,复制到%TOMCAT_HOME%/webapps目录下,并更名为 cas_server.war

    因为我们刚才配置的是eclipse使用的JDK,所以现在通过eclipse启动tomcat

    访问http://localhost:8080/cas_server,出现登录页面,说明部署成功。

    尝试下登录,用户名和密码相同就可以登录成功。

    步骤4:配置CAS客户端

    在eclipse中新建一个web工程,名字:cas_client1

    将c: esourcecascas-client-2.0.11cas-client-2.0.11javalibcasclient.jar复制到工程cas_client1的lib下面(用于单点登录)

    将c: esourcecascas-client-3.1.3-releasecas-client-3.1.3modules目录下的cas-client-core-3.1.3.jar复制到工程cas_client1的lib下面(用于单点退出)

    将c: esourcecascas-client-3.1.3-releasecas-client-3.1.3modules目录下的commons-logging-1.1.jar复制到工程cas_client1的lib下面(用于单点退出)

    在工程cas_client1的web.xml中增加如下代码:


    <!-- 用于单点退出 -->

    <listener>

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

    </listener>

    <filter>

        <filter-name>CAS Single Sign Out Filter</filter-name>

        <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>

    </filter>

    <!-- 用于单点登录 -->

    <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_server/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_server/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>

    </filter>

    <filter-mapping>

        <filter-name>CAS Single Sign Out Filter</filter-name>

        <url-pattern>/*</url-pattern>

    </filter-mapping>

    <filter-mapping>

        <filter-name>CAS Filter</filter-name>

        <url-pattern>/*</url-pattern>

    </filter-mapping>

    注意事项:web.xml中的filter要注意先后顺序,CAS Single Sign Out Filter相关配置要放在原先配置的CAS Filter的前面(至少filter-mapping要在前面)

    至此,步骤4完成。

    测试:同时将cas_client1和cas_server发布一下,访问http://localhost:8080/cas_client1,将自动跳转到服务端的登录页面,填写相同的用户名和密码,则成功登录并跳转回客户端的。

    步骤5:单点登录和退出

    按照步骤4 的流程,再创建web工程,名字:cas_client2

    同时部署server,client1,client2

    测试1:访问client1,登录后可以直接访问client2

    测试2:访问client2,登录后可以直接访问client1

    测试3:登录client1,退出后可以不可访问client1和client2

    如何退出?访问https://localhost:8443/cas_server/logout就退出了。

    注意事项:访问形如http:// localhost:8080/cas_server/logout,这种通过http方式访问退出是不行的!!因为你不通过https来注销,CAS Server怎么"杀"掉它通过https发给你的TGC Cookie?

    至此,步骤5完成,基本完成单点登录和退出功能。

    http://michael-roshen.iteye.com/blog/1969665

    单点登录(Single Sign On , 简称 SSO )是目前比较流行的服务于企业业务整合的解决方案之一, SSO 使得在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。CAS(Central Authentication Service)是一款不错的针对 Web 应用的单点登录框架

    CAS 介绍

    CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目。CAS 具有以下特点:

    • 开源的企业级单点登录解决方案。
    • CAS Server 为需要独立部署的 Web 应用。
    • CAS Client 支持非常多的客户端(这里指单点登录系统中的各个 Web 应用),包括 Java, .Net, PHP, Perl, Apache, uPortal, Ruby 等。

    CAS 原理和协议

    从结构上看,CAS 包含两个部分: CAS Server 和 CAS Client。CAS Server 需要独立部署,主要负责对用户的认证工作;CAS Client 负责处理对客户端受保护资源的访问请求,需要登录时,重定向到 CAS Server。图1 是 CAS 最基本的协议过程:


    图 1. CAS 基础协议
    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 验证的过程对于用户是透明的。

  • 相关阅读:
    Selenium2+python自动化-查看selenium API
    彻底搞懂scrapy的中间件第二章
    彻底搞懂scrapy的中间件第一章
    爬虫面试题
    爬取58同城二手房数据存储到redis数据库和mysql数据库
    Scrapy操作浏览器获取网易新闻数据
    Scrapy框架中的 UA伪装
    scrapy框架中如何使用selenuim
    基于scrapy中---全站爬取数据----CrawlSpider的使用
    基于百度AI的自然语言处理文字分类
  • 原文地址:https://www.cnblogs.com/ttjava/p/3633939.html
Copyright © 2020-2023  润新知