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

CAS实现URL扩展参数

    博客分类:
  • JAVA
阅读更多
CAS实现URL扩展参数

以前用CAS3.3.1实现了一个SSO单点登录,这次遇到一个新需求。
用户想用一个URL链接过来登录,同时要根据URL传递过来的参数转向到一个用户自己定义的页面。

比如,当一封邮件发送给用户后,用户能点击这个LINK直接转向到我们的系统,登录,并转向到用户想要看到的某个特定页面:
<a href="http://localhost:8088/cascenter2/login?auto=true&username=admin&password=111111&service=http://localhost:8088/itsmadmin/j_spring_cas_security_check?spring-security-redirect=http://localhost:8088/itsmadmin/user/list.do">Link</a>
这个链接里面传递了三个参数
username用户名
password密码
service是要转向的页面,其中分了两部分,
http://localhost:8088/itsmadmin/j_spring_cas_security_check 是要转向的WAR包的认证路径
spring-security-redirect 是专项该WAR认证成功后转向的URL

要完成这个功能,需要对CAS3.3.1的源码做稍微改动
org.jasig.cas.CentralAuthenticationServiceImpl 这个类为CAS认证TICKET的入口,不用改动
org.jasig.cas.ticket.ServiceTicketImpl             这个类里面的方法
    public boolean isValidFor(final Service serviceToValidate) {
        updateState();
        return serviceToValidate.matches(this.service);
    }
会去验证,这个service参数和spring-security配置里面的service是否一致
<beans:bean id="serviceProperties"
   class="org.springframework.security.ui.cas.ServiceProperties">
   <beans:property name="service"    value="${cas.client.itsmadmin}/j_spring_cas_security_check" />
   <beans:property name="sendRenew" value="false" />
</beans:bean>
但这里的service是WAR里面固定的,不会根据参数的不同而改变。所以不修改这里会导致
org.jasig.cas.CentralAuthenticationServiceImpl这个类里面的如下行报错:
if (!serviceTicket.isValidFor(service)) {
                    if (log.isErrorEnabled()) {
                        log.error("ServiceTicket [" + serviceTicketId
                            + "] with service [" + serviceTicket.getService().getId() + " does not match supplied service [" + service + "]");
                    }
                    throw new TicketValidationException(serviceTicket.getService());
}

我用比较土的办法,修改了
org.jasig.cas.ticket.ServiceTicketImpl             这个类里面的方法
    public boolean isValidFor(final Service serviceToValidate) {
        updateState();
        //return serviceToValidate.matches(this.service);
   return true;
}

然后重新打包一下
到这个路径
E:\book\opensource\cas\cas-server-3.3.1\cas-server-core
命令:
mvn clean
mvn -DskipTests=true package
结果这个版本的pom.xml好像有点错误,报错找不到这个类:
找不到类MapAdaptable
org.springframework.binding.collection.MapAdaptable

我修改了pom.xml文件,增加了spring-binding
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-binding</artifactId>
    <version>1.0.5</version>
    <scope>compile</scope>
</dependency>
打包成功。

使用POST方式传递三个参数到过去已经可以正常登陆了。发现在URL传递的时候却要报错用户名和密码错误。
修改了cascenter2/WebContent/WEB-INF/view/jsp/customer/ui/casLoginView.jsp
里面的
<form style="display:none" method="post" action="<%=response.encodeRedirectURL("login" + (StringUtils.hasText(request.getQueryString()) ? "?" + request.getQueryString() : ""))%>">

<form style="display:none" method="post" action="<%=response.encodeRedirectURL("login")%>">

就OK了。

但是新问题出来了,当输入用户名和密码错误的时候,不能返回到登陆页面并提示,原来是因为我把QUERYSTRING省略了的原因
改为
<form style="display:none" method="post" action="<%=response.encodeRedirectURL("login" + "?auto=true")%>">
就OK了。
0
0
分享到:
评论
2 楼 xfei6868 2011-03-23  
有没有遇到过chickAlive设置为true,有时候提交或者查询的时候遇到post数据丢失的现象。
1 楼 gufenglian 2010-01-07  
学习了,看来我的集成cas后,记住密码也可以按照此思路来扩展

相关推荐

    cas-client扩展拦截器支持excludes

    标题中的“cas-client扩展拦截器支持excludes”指的是在CAS(Central Authentication Service)客户端的实现中,对拦截器功能进行了扩展,增加了排除特定路径的功能。这通常是为了在使用CAS进行统一认证时,允许某些...

    集成cas实现单点登录认证.zip

    6. CAS扩展性:除了基本的SSO功能,CAS还提供了许多可扩展的功能,如MFA(多因素认证)、审计日志、API访问控制等,可以根据业务需求进行定制。 7. 测试与调试:集成完成后,你需要进行详尽的测试,确保在各种情况...

    cas实现单点登录,登出(java和php客户端)

    同样需要配置CAS服务器URL、服务URL等参数。phpCAS提供了方便的API来集成CAS登录和登出逻辑。 在实际开发中,还需要考虑以下几点: - **安全性**:确保CAS服务器和客户端之间的通信是通过HTTPS进行,以防止中间人...

    CAS实现单点登录.pdf

    CAS的配置和集成过程可能涉及修改web.xml文件,配置CasFilter和CasAssertionSecurityFilter等组件,以及设置相关参数,如cas服务器地址、服务URL等。 总之,CAS提供了一种简单而强大的SSO解决方案,适用于多种环境...

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

    【CAS Client集成】在Tomcat中,可以通过Filter配置保护Web应用资源,比如在web.xml中添加CAS Client的过滤器配置,设置Service URL以及CAS Server的相关参数。 总结来说,实现使用CAS在Tomcat6中进行单点登录,...

    cas-server-3.4.10-release和cas-client-3.2.1-release

    在实际部署和使用过程中,开发者需要根据应用环境配置CAS服务器和客户端的相关参数,例如服务URL、认证源、Ticket验证策略等。同时,为了保障安全性,需要考虑SSL/TLS配置、防火墙规则以及监控和审计机制。 总之,`...

    cas单点登录需要的jar包

    - **配置属性文件**:创建`cas.properties`文件,设置CAS服务器的URL、票证验证URL等相关参数。 **4. 源码分析** `cas-client-core-3.4.1-sources.jar` 包含了CAS客户端的源代码,这对于开发者理解CAS的工作机制、...

    集成框架中使用CAS实现单点登录技术方案.pdf

    根据提供的文件信息,我们可以分析出以下知识点: ### 单点登录(SSO)技术 单点登录是指用户仅需要一次身份验证,就可以访问多...这些内容为集成框架中使用CAS实现单点登录技术方案提供了全面的技术支持和实施指导。

    cas_client.zip CAS认证中心客户端starter

    CAS(Central Authentication Service)是基于Java的开源身份验证框架,用于在网络上实现单点登录(Single Sign-On, SSO)。在本场景中,"cas_client.zip" 是一个包含CAS客户端组件的压缩包,它使得应用程序能够与...

    SpringBoot+Security+Cas

    然后在Spring Boot应用中,需要添加对CAS客户端库的依赖,并创建一个CAS配置类,用于设置CAS服务器的URL、服务验证URL等参数。通过`CasAuthenticationProvider`,Spring Security可以与CAS服务器通信,进行用户的...

    搭建cas服务,cas与sqlserver连接,cas与security连接

    3. **CAS与Spring Security整合**:使用`CasAuthenticationProvider`作为认证提供者,并配置`CasServerUrlPrefix`等参数,让Spring Security知道如何与CAS服务器通信。 4. **自定义过滤器链**:可能需要自定义过滤...

    cas .net单点登录

    在.NET项目中,你可以根据需求扩展CAS客户端库,比如添加自定义登录界面、处理特定的认证失败情况,或者集成特定的用户信息存储。 7. **测试和调试**: 使用提供的`demo`项目进行测试,确保在不同场景下(如正常...

    cas-server-3.4.11和cas-client-3.2.1

    4. **自定义配置**:客户端通常允许开发者定制配置,比如设置URL、安全参数等。3.2.1版本可能提供了更灵活的配置选项。 5. **多语言支持**:虽然主要基于Java,但CAS客户端也可能支持其他编程语言的库,使得非Java...

    CAS单点登录CAS4.0.0+.Net Client

    7. **配置**:集成CAS客户端到.NET应用需要正确的配置,包括CAS服务器的URL、服务的定义以及票证验证的参数等。 8. **安全考虑**:使用SSO系统虽然方便了用户,但也增加了系统的复杂性,因此需要关注安全性。例如,...

    CAS 协议3.0

    CAS(Central Authentication Service)协议3.0是一个用于网络身份认证的开源协议,其设计目的是为了实现单点登录环境。在这一协议中,用户只需要进行一次身份验证,便可以获得对多个应用系统的访问权限。这种方式...

    cas 单点登录 server client

    2. **客户端集成**:在每个需要实现SSO的应用中,引入CAS客户端库,配置CAS服务器的URL和其他相关设置,比如服务端验证URL、服务端登录URL等。 3. **自定义认证**:如果需要使用特定的认证方式(例如LDAP、数据库)...

    cas-server3.5.2

    - **配置**:修改`conf/cas.properties`配置文件,根据你的环境设置数据库连接、服务URL、邮件服务器等参数。 - **自定义服务**:如果你有自定义的服务需要接入CAS,需要在`services`目录下创建服务定义文件,并在...

    phpCAS源码以及调用示例(redis管理session,解决无法logout的问题)

    同时,考虑使用`phpCAS::client()`方法的`$forceRenewal`参数,强制CAS服务器验证每个请求,防止使用过期的票据。 在具体实践中,可以按照以下步骤操作: 1. 初始化phpCAS客户端,设置CAS服务器的URL。 2. 使用`...

    cas学习笔记学习笔记学习笔记

    这通常涉及修改应用的web.xml文件,配置CAS服务器地址、服务验证URL等参数,以便应用能与CAS Server进行身份验证交互。 ### CAS工作原理 CAS的工作流程大致如下: 1. 用户尝试访问受保护的应用系统。 2. 应用系统...

Global site tag (gtag.js) - Google Analytics