/
公共信息是沒有問題的,它很簡單。使用ProxyPass
或ProxyPassMatch
可將代理「/ myApp」反轉爲您的內部Weblogic服務器也很簡單。您可能需要使用其他幾個選項來確保代理主機名和Cookie域的設置正確。但是在「/ private」中設置靜態保護信息會變得更棘手。
1)您可以使用mod_rewrite,這樣的檢查由對myApp設置cookie的存在:
RewriteCond %{HTTP_COOKIE} !the_name_of_the_auth_cookie
RewriteRule ^private - [F,L]
通過這樣的檢查一個cookie的問題是,有沒有辦法來驗證該cookie實際上是一個有效的會話。人們可以隨意創建一個具有該名稱的cookie並且能夠訪問/ private中的數據。
2)您可以設置它,以便任何東西「/私人」訪問,該請求被重寫PHP腳本或東西,可以檢查Cookie以確保它是一個有效的會話cookie,然後提供請求的頁面。喜歡的東西:
RewriteRule ^private/(.*)$ /cookie_check.php?file=$1 [L]
因此,當有人訪問,例如,「/private/reports.pdf」,它被內部重定向到「/cookie_check.php?file=reports.pdf」,它是給這個PHP腳本來訪問它所需的任何內容,以驗證/ myApp設置的cookie。如果cookie是有效的會話,請閱讀「reports.pdf」文件並將其發送到瀏覽器,否則返回FORBIDDEN。
我認爲這是處理這個問題的最好方法。
3)如果您不能運行PHP或任何其他腳本,或者Cookie無法verifed(像session_id的或類似的東西)的數據庫查找,那麼你就必須從代理在WebLogic中。這與通過「cookie_check.php」訪問「/ private」除了它是WebLogic服務器上的應用程序之外,其基本思想不太一樣。就像/ myApp一樣,您需要設置一個反向代理才能訪問它,然後這個應用程序將獲取請求(已從內部從「/ private/some_file」中重寫)檢查cookie的有效性,讀取「some_file」文件在APACHE SERVER上,然後將其發送到瀏覽器,或發送FORBIDDEN。這是總體思路:
ProxyPass /CheckCookie http://internal_server/check_cookie_app
RewriteCond %{REMOTE_HOST} !internal_server
RewriteRule ^private/(.*)$ /CheckCookie?file=$1 [L]
這個條件重新路由所有請求爲「/私有」這並不能阻止「internal_server」通過/ CheckCookie應用起源,而且由於應用程序是在「internal_server」它可以運行只需訪問「/ private」中的文件即可。這是一種完整的方式,但如果只能在WebLogic服務器上檢查/ myApp發出的會話cookie的有效性,則必須來回重新路由請求或類似的請求。
謝謝!當然,最好的選擇是2.我想我會準備應用程序,以便嚮應用程序發出的每個請求都有一個帶有腳本的cookie,超時時間將被注入頁面(在一個級別域),並且當訪問/私人時它將解密cookie,檢查超時,如果可以,向用戶顯示頁面。唯一的問題是主頁(公共和私人部分)都會使用Drupal,所以我需要檢查如何設置Drupal來查找該Cookie。 –