我有一個配置了Windows身份驗證和URL重寫的IIS實例,因此它基本上可以用作反向代理。我的後端服務器(在Linux上運行)需要一個REMOTE_USER
標題。是否可以配置IIS以將有關經過身份驗證的用戶的信息傳遞給後端服務器?IIS後面的HTTP服務器:通過身份驗證標頭
9
A
回答
8
如果IIS配置爲Windows Auth
,則ARR
將挑戰並且僅在用戶通過身份驗證時才轉發請求。
可以在重寫規則中使用HTTP
命名約定和serverVariables
元素轉發具有請求的自定義標題。例如,在以下示例中,將服務器變量LOCAL_ADDR
轉發爲名爲X-MY-HEADER
的標頭。
<rule name="Reverse Proxy to MySite" stopProcessing="true">
<match url="^MySite/(.*)" />
<serverVariables>
<set name="HTTP_X_MY_HEADER" value="{LOCAL_ADDR}" />
</serverVariables>
<action type="Rewrite" url="http://www.myothersite.com/{R:1}" />
</rule>
不幸的是,不可能使用這種技術來轉發REMOTE_USER
標題。這是因爲當存在Authorization
標頭時,在驗證模塊運行之前轉發請求,因此auth服務器變量未設置(映射到標頭時,它們只是空白)。
但是,您可以將IIS設置爲使用Basic Windows Auth
,然後從您的Linux服務器上的Base64
編碼的Authorization
標頭中提取用戶名。
3
我有類似的問題,我想我會提到我如何解決它。我已經安裝了Helicon ISAPI-Rewrite 3 Lite,這是一個ISAPI請求過濾器。由於它在管道中的驗證階段之後運行,因此它可以訪問REMOTE_USER
變量,並且可以重寫請求,以便以REMOTE_USER
作爲其值添加新的HTTP標頭。當然,這隻有在你對後端服務器有一些控制時纔有用,所以你可以利用這個自定義頭的值而不是原來的REMOTE_USER
變量。
在所需片段ISAPI-重寫的全局配置文件(httpd.conf
)如下:
RewriteBase/
RewriteCond %{REQUEST_URI} ^/MySite.*
RewriteHeader X-Remote-User: .* %{REMOTE_USER}
的RewriteCond
部分限制此規則來開始/MySite
的URI;隨時根據需要進行調整。
相關問題
- 1. 跨服務器的IIS身份驗證
- 2. Firebase通過後臺服務器進行身份驗證
- 3. 通過WSO2身份驗證服務器從LDAP獲取驗證
- 4. Authlogic - 通過基本HTTP身份驗證進行身份驗證
- 5. WSO2身份服務器身份驗證
- 6. 身份驗證服務器
- 7. 與身份驗證服務器通話
- 8. 通過身份驗證 - IIS和dotNet
- 9. Web API - HTTP標頭中的身份驗證憑證與SSL身份驗證?
- 10. Ejabberd身份驗證http查詢Django服務器未經身份驗證
- 11. 通過身份驗證在IIS服務器上的VLC Web插件?
- 12. 代理服務器後面的安全表單身份驗證
- 13. 通過IIS中的匿名身份驗證優先考慮Windows身份驗證
- 14. IIS http請求身份驗證問題
- 15. MVC jQuery的Ajax調用未通過身份驗證服務器
- 16. Symfony2通過HTTP頭進行身份驗證
- 17. 使用PHP curl的IIS或Apache Web服務器身份驗證
- 18. 通過NTLM身份驗證代理服務器進行HTTP連接
- 19. 如何通過身份驗證代理訪問TFS服務器?
- 20. 通過代理服務器進行SharePoint身份驗證
- 21. 通過SSH密鑰進行服務器身份驗證失敗
- 22. WCF Rest服務通過瀏覽器進行Windows身份驗證
- 23. 驗證服務器的身份
- 24. 服務器的Google API身份驗證
- 25. Google Apps的身份驗證服務器
- 26. 使用BasicHttpBinding和授權標頭的WCF服務身份驗證
- 27. Java servlet - Windows身份驗證令牌/ IIS服務器
- 28. 設置OTP(雙因素身份驗證)在IIS(FTP服務器)
- 29. IIS應用程序池和SQL服務器Windows身份驗證
- 30. 在IIS服務器之間傳遞Windows身份驗證