我有一些代碼充當HTTP客戶端,它支持基本身份驗證以及NTLM身份驗證。我可以通過要求用戶名/密碼來訪問Apache服務器上的.htaccess
文件來輕鬆測試基本身份驗證的工作原理。但是,如何測試NTLM身份驗證,缺少安裝IIS?有沒有機會接受任何接受NTLM認證的公共HTTP服務器?如何使用NTLM身份驗證測試HTTP客戶端?
回答
正如你可能已經意識到,因爲NTLM是一種專有的身份驗證協議(即沒有通過微軟提供的任何正式公開文件),你將不得不對實際的IIS服務器或者測試在Windows上運行或者你可以嘗試使用嘲弄細節從文檔中收集的身份驗證方案,如本:
你不會找到許多公共HTTP服務器(如果有的話)在互聯網上你將能夠測試。 NTLM身份驗證通常部署用於企業用途,例如針對Active Directory進行身份驗證,並且通常被鎖定在公司VPN的後面。
我硬着頭皮火起來的Windows的一個實例(微軟讓您下載大量的120天的Windows 2008等的試驗),在虛擬機和測試對抗。
我一直在尋找同樣的問題(「如何設置ntlm代理虛擬服務器」)並找到了它。因此,我的解決方案是關於如何爲代理服務器設置轉發NTLM身份驗證,而不使用Microsoft的IIS服務器。相反,我們將使用Apache httpd.exe
- 下載Apache HTTP服務器Apache 2.4.29。 我用Windows的32位來自ApacheHaus
- (VCl 4)版本的二進制文件下載匹配模塊Mod NTLM驗證了,在我的情況mod_authn_ntml-1.0.8-2.4.x-x86-vc14.zip
- 安裝服務器,和模塊,並配置一切都那麼服務器將啓動,你看到的默認網頁,當你瀏覽到localhost
現在重新編輯的conf/httpd.conf的配置文件,並進行以下更改:
#Make sure to load at least the modules, and their dependencies: LoadModule headers_module modules/mod_headers.so LoadModule info_module modules/mod_info.so LoadModule ldap_module modules/mod_ldap.so LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_connect_module modules/mod_proxy_connect.so LoadModule proxy_http_module modules/mod_proxy_http.so LoadModule request_module modules/mod_request.so LoadModule rewrite_module modules/mod_rewrite.so LoadModule socache_shmcb_module modules/mod_socache_shmcb.so LoadModule ssl_module modules/mod_ssl.so LoadModule status_module modules/mod_status.so #add the new module LoadModule auth_ntlm_module modules/mod_authn_ntlm.so
啓用代理服務器。被警告,可能會打開一個開放的代理服務器到互聯網...
ProxyVia On
ProxyRequests On
<Proxy "*">
AuthName "Private location"
AuthType SSPI
NTLMAuth On
NTLMAuthoritative On
<RequireAll>
<RequireAny>
Require valid-user
#require sspi-user EMEA\group_name
</RequireAny>
<RequireNone>
Require user "ANONYMOUS LOGON"
Require user "NT-AUTORITÄT\ANONYMOUS-ANMELDUNG"
</RequireNone>
</RequireAll>
</Proxy>
或者,如果你只是想確保只有一個目錄,你可以將代碼從mod_authn_ntml配置示例複製:
<Location /testDirectory >
AuthName "Private location for testing NTLM authentication"
AuthType SSPI
NTLMAuth On
NTLMAuthoritative On
<RequireAll>
<RequireAny>
Require valid-user
#require sspi-user EMEA\group_name
</RequireAny>
<RequireNone>
Require user "ANONYMOUS LOGON"
Require user "NT-AUTORITÄT\ANONYMOUS-ANMELDUNG"
</RequireNone>
</RequireAll>
# use this to add the authenticated username to you header
# so any backend system can fetch the current user
# rewrite_module needs to be loaded then
RewriteEngine On
RewriteCond %{LA-U:REMOTE_USER} (.+)
RewriteRule . - [E=RU:%1]
RequestHeader set X_ISRW_PROXY_AUTH_USER %{RU}e
</Location>
要捕獲本地環迴流量並調試正在進行的操作,需要安裝Wireshark 2.4.4,然後安裝特殊的npcap-0.97.exe環回捕獲驅動程序。有了這個,你可以嗅探你的瀏覽器和本地Web服務器之間的流量
如果您想使用NTLM身份驗證的代理服務器,您將需要遵循的建議從mod_ntlmn_auth GitHub頁面並在註冊表中設置標誌DisableLoopbackCheck(請參閱https://support.microsoft.com/en-us/kb/896861),否則所有本地身份驗證請求都將以靜默方式失敗。
設置瀏覽器使用本地IP地址作爲代理服務器。如果一切正常,瀏覽器將在後臺發送憑證。
要查看正在發生的事情,現在可以檢查Wireshark日誌,並且Apache日誌/ access.log也會顯示用於身份驗證的Domain \ User。
希望幫助別人那裏,以測試他們的代理腳本,因爲很多代理軟件的我遇到不能正確處理NTLM代理,這是在商業環境中非常重要。
- 1. Java,客戶端NTLM身份驗證
- 2. Flex客戶端身份驗證與NTLM使用md5加密
- 3. 如何在Delphi SOAP Web服務客戶端中使用NTLM身份驗證?
- 4. 如何XMLRPC ::客戶端身份驗證
- 5. Rest客戶端是否支持NTLM身份驗證?
- 6. Django測試客戶端http基本身份驗證用於發佈請求
- 7. 如何使用PHP HTTP客戶端執行基於證書的身份驗證
- 8. Jetty Truststore身份驗證與SSL客戶端身份驗證
- 9. WCF測試客戶端和身份驗證
- 10. 使用NTLM身份驗證進行壓力測試
- 11. 客戶端資源發佈NTLM身份驗證失敗。適用於apache的基本身份驗證
- 12. 客戶端身份驗證 - 處理客戶端證書
- 13. Apigee客戶端應用程序客戶端身份驗證
- 14. JAX-RS:用於基本HTTP身份驗證的REST客戶端
- 15. 如何使用ServiceStack.Net實現客戶端身份驗證
- 16. Web Api客戶端身份驗證(非用戶身份驗證)最佳實踐
- 17. Ionic NTLM身份驗證 - IIS
- 18. NTLM身份驗證Android Studio
- 19. 客戶端身份驗證(SSL)直通?
- 20. websocket客戶端的身份驗證?
- 21. IIS 7.5和客戶端身份驗證
- 22. SOAP客戶端身份驗證C#401
- 23. Web服務客戶端身份驗證
- 24. Spring GemFire客戶端身份驗證
- 25. SSL握手 - 客戶端身份驗證
- 26. 使用httplistener的NTLM身份驗證
- 27. 使用GetHttpConnection進行NTLM身份驗證
- 28. 使用asp.net和ajax從客戶端進行身份驗證測試
- 29. HTTP請求未經客戶端身份驗證方案'Ntlm'授權。從服務器收到的身份驗證頭是'Negotiate,NTLM'
- 30. 如何使用SAML身份驗證來驗證Jira Rest客戶端?
你寫的代碼是什麼,你用的是什麼測試工具? – Kev 2010-10-05 23:02:18
我的代碼是用Java編寫的,我不一定需要自動化那部分測試。 – avernet 2010-10-05 23:36:11
有httpbin-ntlm.com,但現在不在線。見github.com/shazow/urllib3/issues/242#issuecomment-24180808 – 2014-10-06 17:02:21