我想要的是

我想要的是

我想要的是

由于各种原因,我希望看到以下身份验证程序起作用:

  • 前往 moodle.blah.bla
  • Apache 通过 mod_auth_cas 询问你的登录信息
  • 一旦通过身份验证,Apache 会将您发送到 moodle.blah.bla/login/index.php?authCAS=CAS
  • 然后,Moodle 将您发送到已经过身份验证的 CAS 服务器
  • CAS 将您作为经过身份验证的用户发送回 moodle。

我拥有的

目前,我已确认 mod_auth_cas 确实验证了我的用户。我还使用其 CAS 插件成功验证了 Moodle。

问题

我遇到的困难是将这两件事放在一起。

首先,一旦 mod_auth_cas 对您进行身份验证,我不确定如何将用户发送到正确的 Moodle url。

其次,当我手动浏览到 Moodle CAS 身份验证链接时,它最终会将我送入重定向循环。

Firefox has detected that the server is redirecting the request for this address in a way that will never complete.

铬:

ERR_TOO_MANY_REDIRECTS

我对这个问题的看法

对于第一个问题,我认为我只希望在设置特定标头时进行重定向。但我认为标头会一直存在直到会话结束,从而触发每个页面的重定向...

对于第二个问题,mod_auth_cas 的票证是否已失效,因此 apache 试图将我送回 cas 服务器?即使我们刚从那里过来……这将是一个重定向循环。

关于如何让他工作还有其他建议吗?

服务器配置和规格

我的服务器正在运行:

在我的虚拟主机中:

CASValidateServer Off
CASLoginURL https://casserver/cas/login
CASValidateURL https://casserver/cas/serviceValidate
<LocationMatch "/.*">
AuthType CAS
require valid-user
</LocationMatch>

Moodle 配置为使用 CAS 2.0。

CAS 服务器正在运行 4.x。

答案1

不要再尝试将 mod_auth_cas 与 Moodle 结合使用。请单独使用 Moodle 中的 CAS 插件。

为什么要将这两件事放在一起? Moodle 自己的 CAS 插件本身就足够了。

我认为,当您拥有 mod_auth_cas 和 Moodle 的 CAS 时,CAS 参数会被 mod_auth_cas 使用,而这些参数要么对 Moodle 的 CAS 不可用,要么已经被 mod_auth_cas 使用。由于 CAS 令牌是一次性使用的,因此无论哪种情况都意味着 Moodle 的 CAS 无法正常工作。

如果您可以禁用 mod_auth_cas /login/index.php?authCAS=CAS.*,您也许能够让其工作。不过,让它<LocationMatch ...>匹配除相关 moodle AuthCAS=CASURL 之外的所有内容有点超出我现在想要弄清楚的范围。

另一种可能性是CASGateway /login/告诉 mod_auth_cas 允许匿名访问 /login/ 目录(这样 Moodle 的 CAS 就可以接管那里)。我认为这是通过目录而不是 URL 来实现的,但如果这样可行,您可以尝试CASGateway /login/index.php?authCAS=CAS进一步限制它。

答案2

您可以检查 mod_lua,因为它允许使用 lua 语言编写登录钩子。这可能会让您以编程方式添加缺少的内容。

相关内容