【问题标题】:Apache- trying to add Authentication header to proxy requestApache-尝试将身份验证标头添加到代理请求
【发布时间】:2017-05-16 17:49:57
【问题描述】:

我们有一个托管在 Apache 上的 Angular 应用程序,它正在进行 QA 测试。该应用通过 Apache 的 httpd.conf 中的反向代理设置与托管我们的 Web 服务的应用服务器通信:

ProxyPass /SVCS/ https://dev.mycompany.test/SVCS/
ProxyPassReverse /SVCS/ https://devws.mycompany.test/SVCS/

我们注意到原始开发人员在 JavaScript 中硬编码了下游 Web 服务所需的 Basic Auth 标头。我们想从 Web 应用程序中删除它,而是让 Apache 在代理请求中附加 Basic Auth 标头。

<IfModule mod_headers.c>
    Header add Access-Control-Allow-Origin: "*"
    Header set Access-Control-Allow-Methods: "OPTIONS, GET"
    Header set Access-Control-Max-Age: 1
    Header set Access-Control-Allow-Credentials: true
    Header set Access-Control-Allow-Headers: "authorization, X-my-header, X-your-header"
    RequestHeader set Authorization "Basic FOOBAR123ZZZZZZZZZZZZZZZZZZZZZ="
</IfModule>

这个 IfModule sn-p 已经在文件中了,我只是添加了 RequestHeader 行(在这里混淆了)。一旦添加,浏览器就会开始提示输入用户名/密码“需要身份验证”。我尝试设置 Access-Control-Allow-Credentials=false 但没有效果。 Basic auth 用户/密码是为应用程序创建的用于访问 Web 服务的服务帐户,我们不希望最终用户输入任何内容,他们已经通过 SSO 从另一个应用程序进行身份验证。

如何将基本身份验证添加到代理请求的标头而不提示用户输入密码?

我尝试了这篇文章apache-basic-authentication-issue-with-reverse-proxy 的内容,它基本上配置了一个密码文件。但这不起作用,即使输入正确的密码,服务也会返回未授权的 401(另外我不希望用户输入任何内容)

【问题讨论】:

    标签: apache proxy header


    【解决方案1】:

    身份验证提示是因为我为所有请求设置了身份验证标头,而不仅仅是需要它的一项服务。有一个名为的后续服务,如果我添加 Auth 标头,服务器就会抱怨身份验证。我只能将标头的设置范围缩小到此服务(通过 RewriteCond 和 RewriteRule),一切都很好。

    【讨论】:

      猜你喜欢
      • 2020-03-24
      • 2016-01-04
      • 1970-01-01
      • 2020-12-18
      • 2021-11-19
      • 2014-06-02
      • 1970-01-01
      • 2017-04-04
      • 2018-11-29
      相关资源
      最近更新 更多