2016-03-14 52 views
0

我有一個Web API和MVC項目,的Web API 2和HttpClient的

的網頁API部署在api.domain.com 的MVC應用程序部署在domain.com

我最近獲得一定方法在API上,它需要認證(授權類型:密碼)。

我想讓代碼在MVC應用程序的後面傳遞,而不是JavaScript,以保證它安全並遠離有人嗅探角度js流量。

我做了一些研究,我應該使用HttpClient類。如果是這種情況,該客戶端如何處理刷新令牌?現在令牌在8小時後過期,我知道刷新令牌也會發出,但是HttpClient會自動處理這個消息還是必須編寫自己的邏輯來檢查請求是否由於過期的令牌而被拒絕。

謝謝!

回答

1

我認爲使用HttpMessageHandler可以幫到你。

這是有線長達一個HttpClient的方式是通過使用HttpClient的構造函數一個HttpMessagHandler:

1://創建客戶端和消息路徑插入一個OAuth消息處理程序,

2://在請求中插入OAuth身份驗證標頭

3:HttpClient client = new HttpClient(new OAuthMessageHandler(new HttpClientHandler()));

HttpClientHandler是HttpClient提供的默認「網絡」處理程序,它實際發送請求並從網絡接收響應。

請參閱本作完整的細節:https://blogs.msdn.microsoft.com/henrikn/2012/02/16/extending-httpclient-with-oauth-to-access-twitter/

+0

很好的例子,由於 – TheWebGuy

+0

@TheWebGuy如果你喜歡它,那麼請接受它。 :) – nickspol

2

我做了一些研究,我應該使用HttpClient類。如果這是 該案例如何處理刷新令牌?

HttpClient類正如其名稱所暗示的那樣是HTTP協議客戶端。它完全不瞭解OAuth 2.0,在這方面完全不瞭解刷新標記。所以你應該自己寫這個邏輯。基本上你應該遵循的流程是類似的規定:

  1. Authorization頭字段使用的HttpClient和包括現有的OAuth承載令牌發送HTTP請求T中行吟詩人目標端點。
  2. 如果請求成功,那麼你很好走。如果請求失敗並返回401,則應使用刷新令牌來更新訪問令牌,然後使用新的訪問令牌重複步驟1。