【问题标题】:Jasig CAS: Remember MeJasig CAS:记住我
【发布时间】:2014-03-05 10:39:52
【问题描述】:

我在安装 CAS 时遇到了一个奇怪的问题。 最近我们在RememberMe 上激活了RememberMe 功能,票证有效期为3 个月。

当我的客户端应用程序的会话到期时,我在

处被送回 CAS
https://urlOfmyCas/login?service=urlOfClient

即使 CASTGC cookie 存在并且有效的 CAS 再次向我显示登录页面。 如果我在没有服务参数的情况下调用上面的 URL,我将被重定向到“登录成功”页面,因此 CAS 知道我已登录。

除非我发送 renew 参数,否则我希望 CAS 检查 cookie 登录并将我发送回我的客户端应用程序。

我是否在我的 CAS 安装中搞砸了一些东西,或者这是预期的行为

【问题讨论】:

    标签: single-sign-on cas jasig


    【解决方案1】:

    今天终于找到答案了。

    CAS 正在创建有效期为 3 个月的长期票证(无论您在 ticketExpirationPolicies.xml 中指定什么过期超时)。在documentation 中为rememberMeExpirationPolicy 指定的值仅适用于ticketCleaner。因此,即使 cookie 仍然存在,清洁工也可能已经在票证注册表中解除了 TGT。

    如果不带服务参数调用/login,系统只检查cookie中是否有TGTid,不检查ticket registry,所以它显示成功登录页面,这让我有点困惑。

    让我遇到麻烦的是,我假设 org.jasig.cas.ticket.support.RememberMeDelegatingExpirationPolicy 中使用的过期值也是 SECONDS(就像在默认配置中一样),但是这个类需要 MILLISECONDS 的值。 我应该检查一下,但是当我尝试将其设置为 3 个月并且票的有效期为 3 个月时(所以我想得到我想要的),以及上面段落中提到的奇怪行为......我的错误最后。

    【讨论】:

    • 那么,你修复这个bug了吗?
    • 是的!就像我在这个答案中写的那样,这是我的错。假设您想为 rememberMe 设置 1 小时超时。以秒为单位,它将是 3600,但与默认配置不同,rememberme 类需要以毫秒为单位,因此您需要输入 3600000
    • 感谢@Hons。您的意思是在 ticketExpirationPolicies.xml 中的 grantingTicketExpirationPolicy 中更改 <constructor-arg index="0" value="31536000" /> 的数量?我改变它。如果我不重新启动应用程序,那很好。在我重新启动我的应用程序后,当我像这样访问 localhost/ink 时,它也会进入 cas 登录页面。
    • 在我重新加载我的应用程序后,当我访问时,它会进入成功登录页面,但是当我访问我的应用程序时,它也会进入登录页面..
    • 我们可以通过电子邮件交谈吗?我的邮箱是weizhankui2008@gmail.com .thanks
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多