【问题标题】:CAS 6.0 and Spring Security: JWT configuration fails on Service Ticket validationCAS 6.0 和 Spring Security:服务票证验证时 JWT 配置失败
【发布时间】:2020-03-22 02:40:52
【问题描述】:

我正在使用 CAS 6.0 和带有 Spring Security 的 Spring Boot 设置配置,以便转移到 JWT。查看this 指南,我已经配置了模块依赖项、CAS 服务注册表以及签名和加密密钥。流程很顺利:

最后一次调用有两个查询字符串参数redirect=true 和ticket=[JWT string]。 我已经设置了一个过滤器来解码令牌并且它可以工作,但是过滤器链会命中 CasAuthenticationFilter,它会看到票证参数并尝试将其验证为服务票证,但失败了。

如何让它知道jwt,并将请求转发到原始URL?

【问题讨论】:

    标签: spring-boot authentication spring-security jwt cas


    【解决方案1】:

    CAS 5.3.x 中的相同问题。

    最后我做了以下流程:

    CAS 服务器

    1. 在cas服务器中设置cas.properties,添加'cas.ticket.st.numberOfUses=2'让service ticket可以被使用两次。 (默认值为 1)

    应用服务器

    1. 设置过滤器来解码 JWT 令牌,从 JWT 令牌中的密钥“jti”中提取服务票证。
    2. 将响应状态设置为302并重定向到请求url,并将服务票证作为查询字符串命名为“票证”。 (注意在这一步不应该继续下一个过滤器)
    3. 来自 #2 的重定向请求不应在 #1 的过滤器中处理,然后进入过滤器链。

    上述流程有效。但需要更多测试以确认 Web 应用程序和结果 api 服务的工作正常。

    【讨论】:

    • 这听起来像是一个可行的解决方案。不幸的是,我更改了配置以使其正常工作,除非回滚所有内容,否则无法对其进行测试。无论如何,实施这种 hack 来避免 CAS 记录的配置给出的错误对我来说仍然很奇怪。谢谢。
    • 抱歉,我输入了错误的键名,请将 cas.ticket.st.numberOfUser=2 更正为 cas.ticket.st.numberOfUses=2。我已经更正了我的答案。谢谢
    猜你喜欢
    • 1970-01-01
    • 2016-03-25
    • 2022-08-16
    • 2021-05-14
    • 1970-01-01
    • 2019-08-22
    • 2018-04-30
    • 2022-01-15
    • 1970-01-01
    相关资源
    最近更新 更多