Reverse-Proxy

Apache 作為身份驗證代理

  • February 19, 2015

我們正在嘗試從 Apache httpd 實現身份驗證代理。這應該保護使用基本身份驗證的應用程序,但使用者應該使用 httpd 的身份驗證(在我們的例子中為 mod_auth_cas)進行身份驗證。

我可以添加具有適當授權值的 RequestHeader,該值將憑據發送到應用程序,但它是靜態的,只有一個使用者進行身份驗證。

有沒有辦法用腳本設置 RequestHeader 值?或者其他一些方法來建構這樣的身份驗證代理?

我已經在考慮處理代理功能的 cgi 腳本。但在我看來,這就像通往地獄的高速公路。

這幾乎是一個解決方案:

RewriteEngine on

# Create a RewriteMap to do base64 encoding:
RewriteMap base64map "prg:/usr/bin/base64"

# Put the base64-encoded user:password string into an environment variable:
RewriteRule .* - [E=AUTHN:${base64map:%{LA-U:REMOTE_USER}:%{LA-U:REMOTE_PASS}},NE]  

# Put the encoded user:password string into the Authorization header:
RequestHeader Authorization "Basic %{AUTHN}e"

(有關為什麼需要的解釋,請參閱mod_rewrite 文件LA-U。)

但是缺少一件事:使用者的密碼。在上面我使用了 REMOTE_PASS 環境變數,好像它會被設置,但通常沒有這樣的變數。

您將不得不以某種方式獲取 mod_auth_cas 以將使用者的密碼放入環境變數中,例如 REMOTE_PASS,或者從請求標頭中獲取它。如果沒有使用者密碼,您就沒有足夠的資訊來設置 Authorization 標頭。

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