gpt4 book ai didi

apache - 无法根据 Apache 虚拟主机中的路径位置编辑身份验证 header ?

转载 作者:行者123 更新时间:2023-12-05 06:59:36 30 4
gpt4 key购买 nike

Apache 作为反向代理的应用程序行为如下:

  1. 它需要基本的身份验证 header 才能登录。
  2. 对于从/api/*开始的路径只需要 Bearer token 。
  3. 如果 header 中有基本 token ,应用程序返回 401,未经授权的 http 响应 - 它只需要 Bearer token 。

/api/*外的所有URL都配置了CAS认证path 并且我在 vhost 配置文件中设置基本身份验证 token - 在他/她使用 CAS 进行身份验证后无需再次提供登录表单即可登录用户。

Apache 配置文件 enterprise-search.conf :

<VirtualHost *:80>
ServerName https://search.test.xyz
ServerAdmin john@xyz

RemoteIPHeader X-Client-IP
RemoteIPInternalProxy 10.10.10.2
LogFormat "%a %l %u %t \"%r\" %s %b \"%{Referer}i\" \"%{User-agent}i\"" combined-forwarded

CustomLog ${APACHE_LOG_DIR}/enterprise-search-access.log combined-forwarded
ErrorLog ${APACHE_LOG_DIR}/enterprise-search-error.log

LogLevel debug

CASRootProxiedAs https://search.xyz

<Location />
# authn type
AuthType CAS
CASScope /
AuthName "KFUPM"
# authz
# Grant all groups access to the root
AuthGroupFile "/etc/apache2/http-authz/enterprise-search"
Require group all-enterpirse-search
# Pass REMOTE_USER header to application
RewriteEngine On
RewriteCond %{LA-U:REMOTE_USER} (.+)$
RewriteRule . - [E=RU:%1,NS]
RequestHeader set REMOTE_USER %{RU}e
RequestHeader set Authorization "Basic xxxxxxxxxx"
</Location>

# authz: local_groups
<Location /all-enterpirse-search>
AuthGroupFile "/etc/apache2/http-authz/enterprise-search"
Require group all-enterprise-search all-enterpirse-search
</Location>

<Location /api/>
# authn type
AuthType none
Allow from all
Satisfy any

# authz
Require valid-user
# Pass REMOTE_USER header to application
RewriteEngine On
RewriteCond %{LA-U:REMOTE_USER} (.+)$
RewriteRule . - [E=RU:%1,NS]
RequestHeader set REMOTE_USER %{RU}e
RequestHeader edit Authorization "Basic[^,]+, " ""

ProxyPass / http://localhost:3002/
ProxyPassReverse / http://localhost:3002/
</Location>

</VirtualHost>

RequestHeader edit Authorization "Basic[^,]+, " "" 的行为是替换客户端传递的基本 token header ,它工作正常。

但我真正想要的是在 <Location /> 中设置基本 token 并在 <Location /api/> 中删除它.使用 RequestHeader edit Authorization "Basic[^,]+, " ""里面<Location /api/>没有删除基本 token ,应用程序返回带有 401 响应的 API 调用。

我是 Apache 配置的新手,可能是我实现目标的方法不正确。如果有更好的方法,请提出建议。

谢谢。

最佳答案

没有办法提取它,因为您需要授权和应用程序的代理路径。但你可以只在前面制作你的 api,并使 CAS 路径指向/auth 之类的东西,并通过你的 api 重定向到 CAS。

关于apache - 无法根据 Apache 虚拟主机中的路径位置编辑身份验证 header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64367049/

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