Single sign on 未识别的cas票证

Single sign on 未识别的cas票证,single-sign-on,cas,Single Sign On,Cas,我在我的web应用程序中有一个RESTAPI,从中可以获得另一个web应用程序生成的cas票证 该webapp实习生使用cas20proxyticketvalidator验证票证。因此,我还在自定义过滤器中使用Cas20ProxyTicketValidator来验证票据 但它总是给我以下错误: ticket = ST-148008-jWXKeEdHkxmuktvYqXF6-cas org.jasig.cas.client.validation.TicketValidationException:

我在我的web应用程序中有一个RESTAPI,从中可以获得另一个web应用程序生成的cas票证

该webapp实习生使用
cas20proxyticketvalidator
验证票证。因此,我还在自定义过滤器中使用
Cas20ProxyTicketValidator
来验证票据

但它总是给我以下错误:

ticket = ST-148008-jWXKeEdHkxmuktvYqXF6-cas
org.jasig.cas.client.validation.TicketValidationException:
                ticket 'ST-148008-jWXKeEdHkxmuktvYqXF6-cas' not recognized

        at org.jasig.cas.client.validation.Cas20ServiceTicketValidator.parseResponseFromServer(Cas20ServiceTicketValidat
or.java:86)
        at org.jasig.cas.client.validation.AbstractUrlBasedTicketValidator.validate(AbstractUrlBasedTicketValidator.java
:217)

为什么无法识别我的票证?

cas验证票证的方式是:

  • 您的客户端(或其他web应用程序)向中继请求票证 特定服务的服务器,例如case http%3A%2F%2Fwww.mywebapp.com
  • cas服务器生成一行存储用户的ssoguid、服务和票证。它将票据返回给客户机(或 其他网页应用程序)
  • 客户端(或其他Web应用程序)将票证发送到服务器
  • 然后,您的服务器向cas服务器的serviceValidate端点发送请求,请求中包含票证和服务, http%3A%2F%2Fmywebapp.com
  • cas服务器使用票证和服务对查找它生成的行。如果找到该行,它将:a)检查 通过向url发送请求,服务是真实的(b)删除该行 要在此验证检查后使票据无效,请执行c)它将返回 将票证附加到服务器的用户。现在票可以开了 不能再次验证
  • 您遇到的问题可能有以下几个原因:

  • 这张票已经过验证(我不认为这是正确的) (你的情况)
  • 生成票证时发送的服务与发送到serviceValidate端点的服务不同(它们必须 相同)。(我猜这就是你的问题所在 正在体验,特别是如果另一个Web应用程序生成了票证 cas服务器的文件中将包含http%3A%2F%2footherwebapp.com,但是 正在尝试查找包含http%3A%2F%2Fmywebapp.com的行,其中 不存在,因为不是您创建的)
  • 发送的服务可以 中继服务器没有联系(我不完全确定 有关如何工作或检查何时完成的详细信息,但 建议您使用可以联系的服务)

  • 检查生成的服务URL,因此更改包org.jasig的日志级别

    使用SpringBoot,在application.properties中添加

    logging.level.org.jasig=DEBUG
    
    在控制台中

    org.jasig.cas.client.util.CommonUtils : serviceUrl generated: https://xxx
    
    验证并调整application.properties中的cas.client主机url

    ## CAS[2.0]
    cas.server-url-prefix=https://cashost.com/cas
    cas.server-login-url=https://cashost.com/cas/login
    cas.client-host-url=xxx
    cas.validation-type=CAS
    
    小心使用cas.client-host-url,url的末尾没有斜杠

    修改.properties后不要忘记mvn清洁包