资源预览内容
第1页 / 共12页
第2页 / 共12页
第3页 / 共12页
第4页 / 共12页
第5页 / 共12页
第6页 / 共12页
第7页 / 共12页
第8页 / 共12页
第9页 / 共12页
第10页 / 共12页
亲,该文档总共12页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
一.SSO (Single Sign-on)原理SSO 分为 Web-SSO 和桌面 SSO。桌面 SSO 体现在操作系统级别上。Web-SSO 体现 在客户端,主要特点是: SSO 应用之间使用 Web 协议 ( 如 HTTPS) ,并且只有一个登 录入口。我们所讲的 SSO,指 Web SSO 。SSO 的体系中,有下面三种角色: User(多个) Web 应用(多个) SSO 认证中心(一个)SSO 实现模式千奇百怪,但万变不离其宗,包含以下三个原则: 所有的登录都在 SSO 认证中心进行。 SSO 认证中心通过一些方法来告诉 Web 应用当前访问用户究竟是不是通过认证的 用户。 SSO 认证中心和所有的 Web 应用建立一种信任关系。二.CAS 的基本原理CAS(Central Authentication Service) 是 Yale 大学发起的构建 Web SSO 的 Java 开源 项目。1.CAS 的结构体系 CAS Server CAS Server 负责完成对用户信息的认证,需要单独部署,CAS Server 会处理用户名 / 密码等凭证 (Credentials) 。 CAS Client CAS Client 部署在客户端,当有对本地 Web 应用受保护资源的访问请求,并且需要 对请求方进行身份认证,重定向到 CAS Server 进行认证。2.CAS 协议基础协议基础协议上图是一个基础的 CAS 协议, CAS Client 以 过滤器的方式保护 Web 应用的受保 护资源,过滤从客户端过来的每一个 Web 请求,同时, CAS Client 会分析 HTTP 请求 中是否包请求 Service Ticket( 上图中的 Ticket) ,如果没有,则说明该用户是没有经过认 证的, CAS Client 会重定向用户请求到 CAS Server ( Step 2 ) 。 Step 3 是用户认证过 程,如果用户提供了正确的认证信息 , CAS Server 会产生一个随机的 Service Ticket , 会向 User 发送一个 Ticket granting cookie (TGC) 给 User 的浏览器,并且重定向用户到 CAS Client (附带刚才产生的 Service Ticket) ,Step 5 和 Step6 是 CAS Client 和 CAS Server 之间完成了一个对用户的身份核实,用 Ticket 查到 Username ,认证通过。3.CAS 如何实现 SSO当用户访问 Helloservice2 再次被重定向到 CAS Server 的时候, CAS Server 会主动获 到这个 TGC cookie ,然后做下面的事情:1)如果 User 的持有 TGC 且其还没失效,那么就走基础协议图的 Step4 ,达到了 SSO 的效果。 2)2)如果 TGC 失效,那么用户还是要重新认证 ( 走基础协议图的 Step3) 。三三.实践配置实践配置下面我们以 tomcat 5.5 为例进行说明(这里,我将 Server 和 Client 同时放在了同一个 Tomcat 服务器下)。 软件环境:tomcat 5.5 ant-1.6.5, jdk1.5.0_06 下载cas-server-3.0.4.zip和 cas-client 和 cas-server-jdbc-3.0.5-rc2.jar 和 mysql 5.0.16 和 tomcat 5.5.15 http:/www.ja-sig.org/downloads/cas/cas-server-3.0.4.zip http:/www.yale.edu/tp/cas/cas-client-2.0.11.zip http:/developer.ja-sig.org/maven/cas/jars/cas-server-jdbc-3.0.5-rc2.jar http:/www.mysql.com http:/tomcat.apache.org/ (一) 将一个或者一些页面进行支持 HTTPS 传输协议(意义:对某些页面进行了安全传输) (重点掌握) 1.产生 SERVER 的证书库文件 keytool -genkey -alias tomcat -keyalg RSA -keystore keystore-file 并将证书文件放在 web 容器的目录下。2. (在 server 端)配置 tomcat 使用 HTTPS $CATALINA_HOME/conf/server.xml 里注意:keystorePass=“changeit“(这个问证书库文件的密码,也就是上面配置产生 的一个密码) keystoreFile=“/.keystore“(这是证书库文件的存放路径,其中根目录“/”为 tomcat 的安装路径) 3.在 WEB-INFweb.xml 文件中增加SSL /jsp2/el/* CONFIDENTIAL 解释:transport-guarantee 元素指定了客户端和服务端的通信关系,有NONE,INTEGRAL,CONFIDENTIAL。NONE 表示着应用不需要任何传输保障。INTEGRAL 表示着在数据在客户端到服务端的过程中不能有任何改变。CONFIDENTIAL 表示在传输过程中防止其他传输内容的干扰。在使用 SSl 时常用的就 INTEGRAL 或 CONFIDENTIL。4.进行访问测试 (二) 实现 CAS 系统 1.产生 SERVER 的证书库文件 keytool -genkey -alias tomcat -keyalg RSA -keystore keystore-file并将证书文件放在 web 容器的目录下。2. (在 server 端)配置 tomcat 使用 HTTPS $CATALINA_HOME/conf/server.xml 里注意:keystorePass=“changeit“(这个问证书库文件的密码,也就是上面配置产生 的一个密码) keystoreFile=“/.keystore“(这是证书库文件的存放路径,其中根目录“/”为 tomcat 的安装路径)3.将cas-server-3.0.4.zip解压,并将 target/cas.war 拷贝到 webapps 下。4.将 cas-client-2.0.11.zip 解压,把 cas-client-2.0.11javalibcasclient.jar 拷贝到 client 服务器上(这里为同一 tomcat)的 webapps/servlets-examples/WEB-INF/lib 目录下(如果没有就建一个)5.在要使用 CAS 的客户端应用里设置(以 servlets-examples 这个 APP 为例,在 应用时,所有客户端均进行类似配置) ,我们使用 ServletFilter(CAS client 里提供的) 来实现 SSO 的检查。 修改 servlets-examples/WEB-INF/web.xmlCASFilter edu.yale.its.tp.cas.client.filter.CASFilter edu.yale.its.tp.cas.client.filter.loginUrlhttps:/your.cas.server.name:port/cas/loginedu.yale.its.tp.cas.client.filter.validateUrlhttps:/your.cas.server.name:port /cas/proxyValidateedu.yale.its.tp.cas.client.filter.serverNameyour.client.server.name:port CASFilter /servlet/*配置好的例子:CASFilter edu.yale.its.tp.cas.client.filter.CASFilter edu.yale.its.tp.cas.client.filter.loginUrl https:/localhost:8443/cas/login edu.yale.its.tp.cas.client.filter.validateUrl https:/localhost:8443/cas/proxyValidate edu.yale.its.tp.cas.client.filter.serverName localhost:8080 CASFilter /* 6.导出 SERVER 端的的证书文件(证书文件只包含公钥) keytool -export -file myserver.crt -alias my-alias-name -keystore keystore-file / keytool -export -file myserver.crt -alias tomcat -keystore .keystore7.在客户端的 JVM 里的证书库 cacerts 中导入信任的 SERVER 的证书(根据情况有可 能需要管理员权限) keytool -import -keystore cacerts -file myserver.crt -alias hostname(别名) 然后将 cacerts 复制到%JAVA_HOME%/jre/lib/security/目录下 /keytool -import -keystore cacerts -file myserver.crt -alias tomcat8.测试. 把 server 和 client 分别起来(这里为同一个 Tomcat,实际应用时可以在多个服务器上, 且 client 可以为多个应用),检查启动的 LOG 是否正常,如果一切 OK,就访问 http:/localhost:8080/servlets-examples/servlet/HelloWorldExample 系统会自动跳转到一个验证页面,随便输入一个相同的账号,密码,验正通过之后就 会访问 到真正的 HelloWorldExample 这个 servlet 了四四.结合实际的环境的扩展结合实际的环境的扩展1多个 web 应用如何实现单点登陆 (!大家思考一下:如果我想在配置一个客户端,需要什么步骤?) 下面以 jsp-examples 为例子,进行下面得阐述: (1)在webappsjsp-examplesWEB-INFweb.xml 文件中进行配置:CASFilteredu.yale.its.tp.cas.client.filter.CASFilteredu.yale.its.tp.cas.client.filter.loginUrlhttps:/localhost:8443/cas/loginedu.yale.its.tp.cas.client.filter.validateUrlhttps:/localhost:8443/cas/proxyValidateedu.yale.its.tp.cas.client.filter.serverNamelocalhost:8080CASFilter/jsp2/simpletag/*(2)在 webappsjsp-examplesWEB-INFlib 增加引用得 jar 包,casclient.jar。2认证业务方法的扩展: 2.1.1配置 CAS 使用数据库进行验证在 MySql 中的 Test 库中新建 user 表Create TABLE app_user (username varchar(30) NOT NULL default ,password varchar(45) NOT NULL default
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号