CAS服务票证验证失败

时间:2012-02-21 02:27:01

标签: ssl service single-sign-on cas

我已点击链接http://lukesampson.com/post/315838839/cas-on-windows-localhost-setup-in-5-mins,然后cas服务器正常运行,登录网址为http://10.1.1.26:8080/login,验证网址为http://10.1.1.26:8080/serviceValidate

然后我测试了它如下:

  1. 致电http://10.1.1.26:8080/login?service=http://10.1.1.9:8081/default.aspx
  2. 我成功获得服务票,例如ST-9-pJ5UDxqKIHP2zuN3JGe4-cas
  3. 然后我通过拨打http://10.1.1.26:8080/serviceValidate?ticket=ST-9-pJ5UDxqKIHP2zuN3JGe4-cas&service=http://10.1.1.9:8081/default.aspx
  4. 来验证服务票证
  5. 不幸的是,它总是返回无效的票证,
  6. 为了修复它,我尝试使用cas 1.0验证网址http://10.1.1.26:8080/validate?ticket=ST-9-pJ5UDxqKIHP2zuN3JGe4-cas&service=http://10.1.1.9:8081/default.aspx,但它返回“否”。

    然后我生成一个证书文件并将其放入密钥库,然后我使用https://10.1.1.26:8443尝试了上述所有步骤,但是,验证仍然失败。

    我更改了cas log4j配置,打印所有调试信息,下面是日志

    2012-02-21 13:18:36,371 DEBUG [org.springframework.web.servlet.DispatcherServlet
    ] - <DispatcherServlet with name 'cas' processing GET request for [/cas-server-w
    ebapp-3.4.11/serviceValidate]>
    2012-02-21 13:18:36,381 DEBUG [org.springframework.webflow.mvc.servlet.FlowHandl
    erMapping] - <No flow mapping found for request with URI '/cas-server-webapp-3.4
    .11/serviceValidate'>
    2012-02-21 13:18:36,381 DEBUG [org.springframework.web.servlet.handler.SimpleUrl
    HandlerMapping] - <Mapping [/serviceValidate] to HandlerExecutionChain with hand
    ler [org.jasig.cas.web.ServiceValidateController@302a4b] and 1 interceptor>
    2012-02-21 13:18:36,381 DEBUG [org.springframework.web.servlet.DispatcherServlet
    ] - <Last-Modified value for [/cas-server-webapp-3.4.11/serviceValidate] is: -1>
    2012-02-21 13:18:36,391 INFO [org.jasig.cas.CentralAuthenticationServiceImpl] -
    <ServiceTicket [ST-1-pqIeCRqcafGBE6idoCcd-cas] has expired.>
    2012-02-21 13:18:36,391 INFO [com.github.inspektr.audit.support.Slf4jLoggingAudi
    tTrailManager] - <Audit trail record BEGIN
    =============================================================
    WHO: audit:unknown
    WHAT: ST-1-pqIeCRqcafGBE6idoCcd-cas
    ACTION: SERVICE_TICKET_VALIDATE_FAILED
    APPLICATION: CAS
    WHEN: Tue Feb 21 13:18:36 EST 2012
    CLIENT IP ADDRESS: 10.1.1.9
    SERVER IP ADDRESS: 10.1.1.26
    =============================================================
    

    我不明白,也不知道为什么来自其他帖子我看到日志有类似“写票务登记处的服务票证,并检索服务票证”,但我的日志中没有任何内容

1 个答案:

答案 0 :(得分:19)

我不是百分百肯定,因为我看不到你的配置,但是日志说明了这个

<ServiceTicket [ST-1-pqIeCRqcafGBE6idoCcd-cas] has expired.>

这意味着故障单已经过期。 CAS中存在一个名为ticketExpirationPolicies.xml的配置文件,其中包含票证有效的时间。在我的CAS版本中,服务票证的有效期设置为10000毫秒。也许第1步和第3步之间的时间比文件中的到期时间设置(当然)可能与我的不同

<!-- Expiration policies -->
<bean id="serviceTicketExpirationPolicy" class="org.jasig.cas.ticket.support.MultiTimeUseOrTimeoutExpirationPolicy">
    <!-- This argument is the number of times that a ticket can be used before its considered expired. -->
    <constructor-arg
        index="0"
        value="1" />

    <!-- This argument is the time a ticket can exist before its considered expired.  -->
    <constructor-arg
        index="1"
        value="10000" />
</bean>

<bean id="grantingTicketExpirationPolicy" class="org.jasig.cas.ticket.support.TimeoutExpirationPolicy">
    <!-- This argument is the time a ticket can exist before its considered expired.  -->
    <constructor-arg
        index="0"
        value="7200000" />
</bean>

我认为您遵循的教程在配置设置中并不完整。根据您尝试使用此CAS服务器实现的目标,您可能需要一些描述here

的自定义