根据 Apache 中的逻辑注入响应标头

根据 Apache 中的逻辑注入响应标头

我一直在到处寻找解决方案,也尝试了许多不同的方法,但到目前为止都不起作用。这是我的问题。在 Apache 服务器上,我需要处理某个目录/虚拟主机/任何内容下的每个 html 请求,并从另一个服务读取自定义身份验证 cookie。我需要解密然后读取此身份验证 cookie,然后 a.) 将用户重定向到登录服务(完全不同的 URL,不在 Apache 后面),或 b.) 将包含用户名等基本信息的标头注入响应并将用户发送到他们请求的文档。

我尝试编写一个 CGI 脚本,在其中进行重写,将请求的 URL 作为查询字符串附加到 cgi,这将执行逻辑,然后在必要时重定向用户。但后来我发现重定向将删除我编写的任何标头。接下来,我尝试使用带有 mod_ext_filter 的 cgi 脚本,这很完美,但显然您不能用它编写标头,只能编写正文(不过请有人告诉我我错了,因为这将是我的解决方案)。最后,我尝试将我的 cgi 脚本设置为操作并将其添加为 .html 路径的处理程序,但这只会不断给我一个“400 错误请求”错误(并且执行Action verify_request test.rb会让 apache 运行 localhost/test.rb/{user}/index.html?)。我最后的努力可能是用 C 创建一个自定义 Apache 模块,但我真的很想避免这种情况。(不过,如果我们真的说实话,我真正想做的是编写一个自定义 REST API 来为我们的服务处理这个逻辑)

那么,在 Apache 中实现这一点的最佳方法是什么/我是否应该首先将这个逻辑放入 Apache 中?

答案1

您似乎想要重新发明一个 WebSSO 系统,例如 Shibboleth SP、CAS 或许多其他系统。在这种情况下,涉及的重要逻辑无法通过 Apache 配置单独管理(或至少在实践中无法管理)。

如果您真的想独自行动,我建议您使用自定义 Apache 模块,尽管我相信 mod_perl 会为您提供所需的灵活性,而无需编写任何 C 语言代码——而且 O'Reilly 有一本关于 mod_perl 的书。如果您认为编写 C 语言代码比编写 Perl 代码更好,我当然不会责怪您;我自己编写了一个(非常)简单的 C 语言模块来操纵 Apache 对用户的理解,该模块基于由受信任代理设置的定制请求标头,而且它并不太繁重(实际上非​​常省事)。

相关内容