gpt4 book ai didi

grails - 使用 Grails Spring Security CAS 插件重定向循环

转载 作者:行者123 更新时间:2023-12-04 20:08:59 27 4
gpt4 key购买 nike

我正在处理一个涉及 CAS 服务器的项目,该项目使用单点登录 (SSO) 与其他基于 Spring 的项目一起工作,但我收到了一个涉及 Grails spring-security-cas 插件的重定向循环(版本:“:spring-security- cas:2.0-RC1")。我看过 plugin's documentation .我知道 CAS 重定向问题似乎很常见,但我还没有找到与此类情况相关的帖子。我是 Grails 和 CAS 世界的新手,所以提前感谢您对正确方向的任何插入。

访问 grails 应用程序上的安全页面最初会正确重定向到 CAS 服务器登录页面,并使用适当的服务参数:https://example.com:8443/cas/login?service=http://example.com:8080/grailsapp/j_spring_cas_security_check

问题在用户成功登录并且 CAS 重定向回服务后发生。 grails 应用程序中的 j_spring_cas_security_check 正在重定向回 https://example.com:8443/cas登录页面,它看到 TGC 并重定向回服务 j_spring_cas_security_check 页面,该页面无限地重定向 [直到浏览器给出重定向循环错误]。看起来每次迭代都会创建新的服务票证。

我的 Config.groovy 有:

grails.plugin.springsecurity.cas.loginUri = /login
grails.plugin.springsecurity.cas.serviceUrl = http://example.com:8080/grailsapp/j_spring_cas_security_check
grails.plugin.springsecurity.cas.serverUrlPrefix = https://example.com:8443/cas
# we aren't using cas with proxy
# logout details not shown here

根据其他问题/答案已经尝试过不成功的尝试:
  • 我不认为问题出在 cas 服务器上:当我直接进入另一个已经使用 CAS 的项目时,它们会检测票证 cookie 并登录就好了,而无需用户再次进行身份验证。
  • SSL 证书是自签名的,并且已经添加到 Java 的 cacert 存储中。不会发生 SSLHandshake 或与证书相关的异常等。
  • 这不是像 question 19710841 那样糟糕的凭据或代理情况,但我已经尝试将/j_spring_cas_security_check 添加到 Annotation staticRules 中,但得到相同的循环。

  • cas 服务器的日志包括:
    =============================================================
    WHO: [username: sampleuser]
    WHAT: supplied credentials: [username: sampleuser]
    ACTION: AUTHENTICATION_SUCCESS
    APPLICATION: CAS
    WHEN: Fri Jan 03 23:52:41 GMT 2014
    CLIENT IP ADDRESS: XXX.XXX.XXX.XXX
    SERVER IP ADDRESS: example.com
    =============================================================
    =============================================================
    WHO: [username: sampleuser]
    WHAT: TGT-24-Rttmt5i5raWcV1Z5wZavVopigQc4xeIckEUfMKdG3EwEzI3LUI-cas.service
    ACTION: TICKET_GRANTING_TICKET_CREATED
    APPLICATION: CAS
    WHEN: Fri Jan 03 23:52:41 GMT 2014
    CLIENT IP ADDRESS: XXX.XXX.XXX.XXX
    SERVER IP ADDRESS: example.com
    =============================================================

    INFO [org.jasig.cas.CentralAuthenticationServiceImpl] - <Granted service ticket [ST-77-cneJOIwmnoOdKqkscaiy-cas.service] for service [http://example.com:8080/grailsapp/j_spring_cas_security_check] for user [sampleuser]>

    ####### FIRST ITERATION OF LOOP BELOW #############

    =============================================================
    WHO: sampleuser
    WHAT: ST-77-cneJOIwmnoOdKqkscaiy-cas.service for http://example.com:8080/grailsapp/j_spring_cas_security_check
    ACTION: SERVICE_TICKET_CREATED
    APPLICATION: CAS
    WHEN: Fri Jan 03 23:52:41 GMT 2014
    CLIENT IP ADDRESS: XXX.XXX.XXX.XXX
    SERVER IP ADDRESS: example.com
    =============================================================
    =============================================================
    WHO: audit:unknown
    WHAT: ST-77-cneJOIwmnoOdKqkscaiy-cas.service
    ACTION: SERVICE_TICKET_VALIDATED
    APPLICATION: CAS
    WHEN: Fri Jan 03 23:52:41 GMT 2014
    CLIENT IP ADDRESS: 127.0.0.1
    SERVER IP ADDRESS: example.com
    =============================================================

    DEBUG [org.jasig.cas.web.flow.InitialFlowSetupAction] - <Placing service in FlowScope: http://example.com:8080/grailsapp/j_spring_cas_security_check>
    INFO [org.jasig.cas.CentralAuthenticationServiceImpl] - <Granted service ticket [ST-78-6qsbaVNNOess4VhGOQE4-cas.service] for service [http://example.com:8080/grailsapp/j_spring_cas_security_check] for user [sampleuser]>

    ####### SERVICE_TICKET_CREATED and SERVICE_TICKET_VALIDATED LOOP CONTINUES A FEW MORE TIMES BEFORE BROWSER GIVES UP #############

    最佳答案

    除了覆盖UserDetailsService我必须配置 filterProcessesUrlConfig.groovy

    grails.plugin.springsecurity.cas.filterProcessesUrl = "/user/login" // same as uri part of serviceUrl
    grails.plugin.springsecurity.cas.serviceUrl = "http://yoursite.com/user/login"

    CasAuthenticationFilter 在 CAS 上进行身份验证后启动。以下是源代码引用链接:

    您也可以查看 CasAuthenticationFilter.java 的来源见 serviceTicketRequestsuper.requiresAuthentication方法。

    关于grails - 使用 Grails Spring Security CAS 插件重定向循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20915211/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com