HttpClient基於HTTP協議認證方案

來源:互聯網
上載者:User

標籤:

簡介

 

HttpClient支援三種不同形式的HTTP協議驗證發難:Basic,Digest和NTLM。這些都可以解決同http伺服器或是Proxy 伺服器之間的認證。

 

證明伺服器

 

HttpClient處理伺服器認證幾乎是透明的,發開者只需要做一件事情,提供一個合法login認證。此認證被儲存到HttpState執行個體中並且可調用方法setCredentials(AuthScopeauthscope, Credentials cred)和getCredentials(AuthScope authscope)方法設定和得到。

 

HttpClient的內建自動認證機制可通過HttpMethod類中的setDoAuthentication(boolean doAuthenticaiton)方法廢棄掉。這樣做你只會影響到method的執行個體。

 

Preemptive Authentication(搶先認證)

 

用HttpClient可以實現Preemptive authenticaiton。這種方式HttpClient會發送基本的認證Response,有些情況下,會在伺服器返回一個未經授權的Response之前就發出去,從而使串連減少了開銷。你可以像下面這樣使用它

client.getParams().setAuthenticationPreemptive ( true);

這種方式也要求必須為目標伺服器或是Proxy 伺服器設定預設認證。若不能提供預設的認證將會使Preemptive Authentication(搶先認證)的方式失效。

Credentials defaultcreds = new UsernamePasswordCredentials(“username”, “passowrd”);

Client.getState().setCredentials(new AuthScope(“myhost”, 80, AuthScope.ANY_REALM), defaultcreds);

 

Security aspects of server authentication(安全伺服器驗證)

 

使用預設認證開發應用時,可能會與安全web網站或是普通web網站進行通訊。當Preemtive authentication被啟用或是認證未給出一個明確的認證領域和主機時,HttpClient嘗試使用預設認證與目標網站去驗證。如果你想避免發送認證去一個不信任的網站儘可能的縮小的認證範圍:始終指定主機。

 

在正式產品中禁止使用AuthScope.ANY驗證域去設定認證。這樣做會發送所有的認證。

這樣設定方式只應該在debugging階段使用。

// To be avoided unless in debug mode

Credentials defaultcreds = new UsernamePasswordCredentials(“username”, “password”);

Client.getState().setCredentials(AuthScope.ANY, defaultcreds);

 

Proxy Authentication(代理認證)

 

Basic

 

Basic authentication是最原始最和諧的一種認證方案。遺憾的是,這也是最不安全,因為它發送到伺服器的使用者名稱和密碼是沒有經過加密的。Basic authentication需要一個UsernamePasswordCredentials的執行個體去實現,無論是特定領域還是預設的認證。

 

Digest

 

Disgest authectication在HTTP1.1協議中添加進來,這種方案並沒有像Basic authectication廣泛的使用起來。Digest authentication明顯要比Basic authentication方案安全,因為它傳送加密以後的使用者名稱和密碼。

 

Digest authentication需要一個UsernamePasswordCredentials的執行個體。

 

NTLM

 

NTLM是HttpClient所支援的最複雜的一種認證協議。這是一個專利協議,由Microsoft設計,也沒有公開其標準。NTLM早期的版本由於設計的錯誤導致安全性較Digest authentication差,然而在Windows NT 4修複了這個BUG,現在認為就安全性要比Digest authenticaiton安全。

 

轉載:http://blog.csdn.net/mgoann/article/details/4054747

文章來源:HttpClient基於HTTP協議認證方案

HttpClient基於HTTP協議認證方案

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.