`
liuguofeng
  • 浏览: 450186 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

[SSO技术]CAS在tomcat下的部署和定制(扩展应用)

 
阅读更多

引言:

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

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

说明:

在上篇中,我们完成了CAStomcat下的部署工作,下篇中,将以定制和扩展为主。

环境:

Windows XP

JDK1.5

Tomcat6.0

JBoss-4.2.2.GA

MySQL5.0

准备:

完成上篇的操作流程

定制和扩展1:定制登录页面试图

1.    在目录“ cas_server/WEB-INF/view/jsp/default/ui ” 

l casConfirmView.jsp: 当用户选择了“ warn ”时会看到的确认界面

l casGenericSuccess.jsp: 在用户成功通过认证而没有目的Service时会看到的界面

l casLoginView.jsp: 当需要用户提供认证信息时会出现的界面

l casLogoutView.jsp: 当用户结束 CAS 单点登录系统会话时出现的界面

2.    在目录“cas_server /WEB-INF/view/jsp/default/ui/includes ” 

l top.jsp: 上述4个文件的头部文件

l buttom.jsp: 上述4个文件的尾部文件

3.    在目录“cas_server /WEB-INF/classes ”

l 包含各个语言的porp文件(比较casLoginView.jsp文件)

4.    在目录“cas_server /js”

l common_rosters.js(参见casLoginView.jsp文件注释)

5.       一切页面特调包括闪烁的效果都是cssjs绑定标签id的效果,改动css文件或者修改id立可还原纯文本布局。

定制和扩展2:从tomcat移植到JBoss

1.       完成基本配置,同tomcat下的相同,其中server.xml文件在目录jboss4.4/server/default/deploy/jboss-web.deployer目录下

2.       Jbossjsfsunjsf冲突,所以将jboss4.4/server/default/deploy/jboss-web.deployer/jsf-libs下的jsf-api.jarjsf-impl.jar复制覆盖掉cas_server工程lib下的2jar文件

注意事项:不要复制多余的jar到工程下,一旦与jboss下的jar发生重复的冲突,会报类型转换错误的error

定制和扩展3:通过直接访问数据库定制密码验证
CAS Server

1.       deployerConfigContext.xml文件中加入dateSourceBean

         <bean id="casDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">

                   <property name="driverClass" value="com.mysql.jdbc.Driver" />

                   <property name="jdbcUrl" value="jdbc:mysql://127.0.0.1:3306/portal" />

                   <property name="user" value="root" />

                   <property name="password" value="root" />

         </bean>

2.       加入包:

         c3p0-0.9.1.jar

         mysql-connector-java-5.1.5-bin.jar

         cas-server-support-jdbc-3.3.1.jar(来自于cas-server-3.3.1.zip)

         spring-jdbc-2.5.5.jar

3.       deployerConfigContext.xml文件中

         注释掉:

         <bean class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePassword
AuthenticationHandler" />

         换成:

         <bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">

         <property name="dataSource" ref="casDataSource" />

         <property name="sql" value="select PWD from USER where lower(NAME) = lower(?)" />

    <property name="passwordEncoder" ref=" passwordEncoder "/>

         </bean>

4.       新建类org.jasig.cas.authentication.handler.MyPasswordEncoder
(
继承org.jasig.cas.authentication.handler.PasswordEncoder接口及其 encode() 方法),在encode()方法中实现加密算法。

添加:

<bean id="passwordEncoder" 
            class="org.jasig.cas.authentication.handler.MyPasswordEncoder"/>

 

Date Base

按照xml中的配置,在本地搭建mySQL数据库,建立名为portalschema,创建USER表,至少拥有字段NAMEPWD
说明

以上操作完成CAS对密码校验的定制,通过读取MySQL数据库中指定的表字段,附带密码加密类,但不包括加密算法。(详见参考文档1

定制和扩展4:登录验证之添加“用户不存在”错误信息
CAS Server

1.       org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler (参考 “定制和扩展3)在验证时,当用户名正确但密码错误时抛出特定Exception,比如抛出异常:

org.jasig.cas.authentication.handler. BadPasswordAuthenticationException

2.       找到这个Exception类,将它的CODE值:
error.authentication.credentials.bad.usernameorpassword.password
复制到cas_server根目录下的prop文件中,如:messages_zh_CN.properties,在这个文件中添加一行:
error.authentication.credentials.bad.usernameorpassword.password=
您的密码错误。

3.       以上,完成了一种错误信息的提示,你可以继续按照这个异常类创建更多的错误信息,提示如:“对不起,用户不存在!”之类各种错误信息。

定制和扩展5:定制Session返回用户ID
说明

CAS Server默认的是验证用户名和密码,验证成功后返回用户名到客户端。

假设,由于用户名不是唯一的,客户端希望在验证成功后返回用户ID,如何实现?
CAS Server

找到类org.jasig.cas.authentication.principal.UsernamePasswordCredentials

添加id属性及其gettersetter方法:

private String userid;
       public final String getUserid() { return userid; }

 

 

       public final void setUserid(String userid) { this.userid = userid; }

找到类org.jasig.cas.authentication.principal.UsernamePasswordCredentialsToPrincipalResolver

注释代码:

return usernamePasswordCredentials.getUsername();

添加代码:

return usernamePasswordCredentials.getUserid();

org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler (参考 “定制和扩展3)

在必要的地方添加代码:

credentials.setUserid("u85425");

这样,客户端从session中取得的就将是"u85425"

定制和扩展6Cas Server的中文乱码问题

按照参考文档6操作,确认可行。其中协议为cas2.0,设置为gb2312(详见参考文档6

参考文档

1.        使用CASTomcat中实现单点登录(定制和接口类的扩展)

http://hi.baidu.com/leon1509/blog/item/990f7422c96deaa14623e823.html

http://hi.baidu.com/leon1509/blog/item/28ca4e2c64f763e98a13992c.html

2.        cas单点退出代码解读

http://www.blogjava.net/xmatthew/archive/2008/07/09/213808.html

3.        cas单点退出代码Demo

http://blog.sina.com.cn/s/blog_4aebeb1201008eg3.html

4.        cas单点退出代码(好多文章啊 关键1CAS Server需要3.1.2及以上版本)

http://iroyce.javaeye.com/category/16769?show_full=true

5.        CAS Logout 问题(关键2:要通过https退出)

http://www.fish888.com/CAS-Logout-t133632

6.        CAS Server的中文乱码解决方案

http://hi.baidu.com/mleoking/blog/item/982eb709ac76dcca3bc76306.html

 

http://blog.csdn.net/mpttian86/article/details/5376612

分享到:
评论

相关推荐

    使用 CAS 在 Tomcat6 中实现单点登录

    总结来说,实现使用CAS在Tomcat6中进行单点登录,需要理解SSO的基本概念,熟悉CAS的工作原理和协议流程,掌握CAS Server的部署和配置,以及CAS Client在Tomcat中的集成。通过这些步骤,可以构建一个安全且方便的单点...

    使用CAS在Tomcat中实现单点登录

    然后,CAS Server作为Java Web应用部署在Tomcat上,通常需要根据具体需求扩展用户验证接口,以适应不同组织的认证策略。 部署CAS Server的步骤包括: 1. 配置Tomcat使用HTTPS,这涉及到生成SSL证书和修改Tomcat的`...

    基于Tomcat6的CAS SSO配置

    基于Tomcat6的CAS SSO配置涉及的主要知识点包括SSO(Single Sign-On,单点登录)、CAS(Central Authentication ...正确配置和使用CAS能有效地提升系统的安全性,简化用户登录流程,同时保持应用的可扩展性和灵活性。

    使用CAS在Tomcat中实现单点登录参考代码及配置

    - **配置CASServer**:首先需要在Tomcat环境中部署CASServer。这通常涉及配置服务器的相关参数,比如数据库连接、安全设置等。 - **配置CASClient**:为了使Web应用能够与CASServer进行交互,需要在应用中添加CAS...

    SSO之CAS单点登录实例演示

    CAS的主要优点在于它的开放性和可扩展性,可以轻松地与各种应用集成,无论这些应用是基于Web的还是桌面应用。 在"SSO之CAS单点登录实例演示"中,我们将探讨以下几个关键知识点: 1. **CAS架构**:CAS的核心包括CAS...

    CAS单点登录 for Tomcat

    在本案例中,重点是将CAS与Tomcat应用服务器集成,实现Linux环境下的单点登录。 首先,了解CAS的基本工作原理:用户尝试访问受保护的资源时,会被重定向到CAS服务器进行身份验证。如果验证成功,CAS会返回一个票据...

    CAS SSO

    9. **部署与配置**:CAS可以部署在多种环境中,如Tomcat、Jetty等Web服务器,配置通常涉及设置服务器端点、数据库连接、认证策略等。 10. **最佳实践**:在实施CAS时,应考虑最佳实践,如使用HTTPS、定期更新CAS...

    SSO学习有CAS SSO配置.doc

    3. **CAS服务器的部署**:将CAS服务器的war文件部署到Tomcat或其他Servlet容器中,并根据组织的特定需求进行定制,如自定义登录界面或集成其他认证机制。 4. **客户端集成**:每个需要SSO功能的应用需要配置为CAS...

    myeclipse、tomcat集成CAS

    本知识点将详细介绍如何在myeclipse和tomcat中集成CAS,以便在开发和部署环境中实现SSO功能。 首先,理解CAS的基本工作流程至关重要。当用户尝试访问受CAS保护的应用时,会被重定向到CAS服务器进行身份验证。如果...

    Weblogic使用YALE(耶鲁)CAS实现SSO单点登录 的方法.doc

    Yale CAS 是耶鲁大学开发的一种开源的单点登录(SSO)解决方案,提供了一个通用的身份验证框架,允许用户使用单个身份验证来访问多个应用程序。CAS 服务器充当着身份验证服务器的角色,负责验证用户的身份,生成 ...

    CAS服务器部署

    2. **部署到Tomcat**:将WAR文件复制到Tomcat的`webapps`目录下,Tomcat会自动解压并启动CAS服务。 3. **启动与验证**:启动Tomcat,通过浏览器访问`http://your-server:port/cas`,如果出现CAS登录页面,表示部署...

    CAS单点登录SSO( Single Sign-On)

    CAS(Central Authentication Service)单点登录(Single Sign-On,简称SSO)是一种网络认证协议,旨在简化用户在多个应用系统间的登录流程。当用户通过CAS认证后,可以在无需再次输入凭证的情况下访问已接入CAS的...

    openjdk11+tomcat9+CASServer.zip

    在这个"openjdk11+tomcat9+CASServer.zip"压缩包中,包含了搭建CAS Server 6.3系列所需的基础软件组件,主要涉及三个关键技术:OpenJDK 11、Tomcat 9和CAS Server。 **OpenJDK 11**: OpenJDK是Java Development Kit...

    SSO配置和应用说明.pdf

    然而,仅部署CAS Server还不够,通常需要根据实际业务需求进行扩展,比如定制认证接口。对于JDBC认证,可以使用提供的cas-server-support-jdbc-3.3.jar包,配置数据库连接信息,使CAS能够通过数据库验证用户身份。 ...

    tomcat + cas

    这里提到的"cas 服务端tomcatx64"指的是在64位操作系统上运行的Tomcat服务器作为CAS服务端,而"cas 客户端tomcatx64-clinet1"和"cas 客户端tomcatx64-clinet2"则是两个使用64位Tomcat的客户端应用,它们将与CAS...

    CAS 框架 SSO的实现.pdf

    - 在Tomcat中部署CASServer和CASClient。 - 配置CASServer,包括数据库连接信息、认证策略等。 - 配置CASClient,确保能够正确地重定向至CASServer进行认证。 #### 四、结合实际的环境的扩展 - **多个Web应用...

    CAS server 5.2.3. Tomcat war最新版

    3. **部署CAS**:将war文件复制到Tomcat的`webapps`目录下,Tomcat会自动解压并部署应用。 4. **启动Tomcat**:运行Tomcat服务器,访问默认的登录页面:`http://localhost:8080/cas/login`。 5. **配置默认账号**:...

    SSO配置和应用说明.docx

    本文将详细介绍如何配置和应用SSO,特别是基于CAS(Central Authentication Service)的解决方案。 CAS是Yale大学发起的一个开源项目,它为Web应用系统提供了一种安全可靠的单点登录解决方案。CAS包含两个主要组件...

    CAS-Server-Client单点登录demo

    在"apache-tomcat-7.0.75-cas"中,包含了Apache Tomcat 7.0.75版本,这是一个流行的Java Servlet容器,常用于部署Web应用程序。Tomcat自带的"examples"目录提供了各种示例应用,可以用来测试CAS整合的效果。你可以...

    cas4.2.7服务端和客户端应用

    4. 将 CAS 服务器应用部署到Tomcat的 `webapps` 目录下,这里对应的是 `webserver` 文件夹。 5. 修改 `conf/server.xml` 文件配置 CAS 相关端口和上下文路径。 6. 启动CAS服务,访问 `http://localhost:8080/cas` ...

Global site tag (gtag.js) - Google Analytics