2015-02-23 14 views
1

我很努力地理解如何在Web API 2的OWIN管道中實現以下內容。Web API 2:使用瀏覽器中生成的第三方訪問令牌進行身份驗證和授權

我建立一個應用程序,允許用戶與多個第三方身份提供商,如Facebook,Twitter,LinkedIn等登錄不過,我想執行的驗證步驟完全客戶端。例如,Facebook爲開發人員提供了一段標記和JavaScript代碼,在瀏覽器中執行身份驗證,從而產生Facebook訪問令牌 - 所有這些都不需要對我的API進行任何調用。

Visual Studio 2013附帶的Web API模板似乎都假設API本身負責驗證流程。我已經成功地獲得了這種認證方式,但在我看來,執行這項工作不是API的責任。

這是我一直在努力實現(但是沒有成功)的方法:

  1. 提供像/authenticate/facebook端點接受相應的訪問令牌,並返回一個智威湯遜與「解碼」索賠如果訪問令牌有效。無論第三方身份提供者如何,此JWT都會有類似的聲明。對於Facebook,我認爲這涉及到Graph API的/me端點的調用。
  2. Store中智威湯遜在瀏覽器的localStorage的後續API調用
  3. 發送JWT在Authorize頭爲每個API調用
  4. 避免餅乾,如果在所有可能的

我的問題:

  1. 這是處理第三方授權的適當方式嗎?
  2. JWT的過期期限是否與第三方訪問令牌相匹配?我承認是的,但我想知道這裏的任何警告。
  3. 我在哪裏以及如何存儲第三方訪問令牌以用於隨後的API調用?我是否將它們包含在JWT中?
  4. 是否有我可以使用開箱即用的模板,或者可能是以這種方式實現身份驗證和授權的在線資源?我不明白如何使用Web API的許多類和功能來實現這一點。
+0

(迴應一個明顯被刪除的評論)Facebook的代幣是用於Facebook的API,但是 - 如同OAuth中經常發生的那樣 - 它們也被用來證明身份。這就是爲什麼我的嘗試解決方案是使用每個提供商的API處理第三方訪問令牌,並將適用於應用程序的聲明存儲在JWT中供以後使用。但是,我沒有考慮在哪裏存儲第三方訪問令牌。我想這就是Web API模板使用cookie身份驗證的用處,但我不確定。顯然,Web API將以某種方式參與解決方案;我只是不知道如何。 – NathanAldenSr 2015-02-23 15:41:11

回答

0

我現在主要想到了這一點。我相信,經過大量研究後,我的架構選擇是正確的,特別是所謂的「斷言流程」。我正在使用Thinktecture的Identity Server 3項目充當我的STS。我正在使用ICustomGrantValidator的自定義實現來執行Facebook訪問令牌的驗證並轉換爲聲明。

相關問題