Reverse-Proxy
Apache 作為身份驗證代理
我們正在嘗試從 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 標頭。