Apache-2.4

Apache 反向代理未將自定義標頭傳遞給目標伺服器

  • April 19, 2021

我不確定這是否是提出此類問題的正確地方,但同時我不知道有什麼更好的地方,所以請多多包涵。

我已將 Apache 配置為我的 PostGraphile 服務的反向代理。我的想法是使用 Apache 進行 kerberos 身份驗證,然後讓經過身份驗證的使用者可以使用 PostGraphile 服務。

我還需要將一些自定義標頭傳遞給該服務。

此時,我可以打開 kerberos 身份驗證或通過標頭。一旦我打開標頭身份驗證,服務端就不會出現。

這是我的虛擬主機配置:

<VirtualHost *:80>
 <Location />
   AuthType Kerberos
   AuthName "Kerberos Authentication"
   KrbAuthRealsm MY.REALM
   KrbServiceName HTTP

   BrowseMatch Windows gssapi-no-negotiate
   KrbMethodNegotiate on

   KrbMethodK5Passwd off

   Krb5Keytab /path/to/keytab.keytab

   # require valid-user # with this line uncomented headers defined later do not appear on service side
   require all granted # with this line uncommented headers defined later do appear on service side however any user can access the service

   ProxyPass 'http://my.service:5000'
   ProxyPassReverse 'http://my.service:5000'
 </Location>
 <Proxy *>
   Order Deny,Allow
   Deny from all
   Allow from local.ip.range
 </Proxy>

 RequestHeader set MYCUSTOMHEADER foo
</VirtualHost>

我沒主意了。

我一直在閱讀 Apache 文件、auth_mode_kerb 文件、堆棧執行緒和部落格,但似乎我在這裡遇到了一些奇怪的錯誤或遺漏了一些基本的東西……

任何提示都會非常受歡迎

經過試驗,我終於找到了滿足我需求的解決方案,但是我必須承認我不知道為什麼它會以它看起來的方式工作。

如果我在我的配置中添加以下內容,我可以在Authorization標題中傳遞我需要的資訊。

RewriteEngine On
RewriteCond %{LA-U:REMOTE_USER} (.+)
RewriteRule .* - [E=RU:%1]
RequestHeader add Authorization %{RU}e

然而,其他自定義標題仍然沒有出現,這對我來說仍然是一個謎。


編輯:

在擺弄了更多之後,我發現一旦我覆蓋了授權標頭,我的自定義標頭也會顯示出來。如果這是預期的行為(可能是安全功能)還是 mod-auth-kerb 中的錯誤,將會很高興。


編輯:

匿名使用者強調說KrbAuthRealsm(應該是KrbAuthRealm)有一個錯字 - 我無權訪問該測試設備,不記得我是在複製/粘貼還是打字,但因為同一個匿名使用者決定刪除我添加的答案它在這裡作為編輯。

引用自:https://serverfault.com/questions/977552