2014-07-07 67 views
2

我正在用我們的IDP服務器創建一個測試項目。我們創建了一個簡單的Web API示例項目,它返回用戶對其get方法的聲明。我們還通過在規範中使用OAuth Flow GrantResourceOwnerCredentials或Flow 3創建了令牌。幾件事我不太明白,需要一些幫助,得到一些更多的瞭解: -ASP.Net Web API如何驗證OAuth 2.0令牌?

  • 如何在Web API知道令牌從授權 客戶來了,它是如何得到驗證。

  • 在Web Api代碼中,我們可以覆蓋並檢查OAuth傳入令牌及其驗證。在生產環境中,我們將爲IDP和Web API分開HA服務器,那麼我們是否需要在Web配置中指定一些證書?

  • 我們是否可以將所有的Auth機制提供給Web Api?如基本的OAuth等

回答

1

Web API如何知道令牌來自授權客戶端,以及如何驗證。

正常情況下,訪問令牌通過類似授權的HTTP頭傳遞。您可以在特定的航線網絡API使用處理,並檢查該令牌與你的邏輯

凡在網絡API代碼,我們可以覆蓋並檢查傳入的OAuth令牌 及其驗證。在生產環境中,我們將有 單獨的HA服務器用於IDP和Web API,那麼我們需要在web config中指定一些 證書嗎?

如上所述。最好的地方就是處理器

public class AuthenticationHandler : DelegatingHandler 
{ 
    protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) 
    { 
     //... 
    } 
} 

,不要忘記配置爲使用身份驗證處理某些特定的路線

public static void Register(HttpConfiguration config) 
{ 
    // ... 
    config.MessageHandlers.Add(new AuthenticationHandler()); 
    // ... 
} 

你只需要,如果你的邏輯需要這個證書來驗證令牌證書。最好的方法是在Windows證書存儲中存儲和讀取它,並在web.config中僅配置所需證書的指紋,因此web.config中沒有用戶名或純文本密碼。

我們可以將所有的Auth機制都提供給Web Api嗎?像 基本,OAuth的等

是的,你可以通過OAuth一起使用基本authentcation,只是使用的東西區別開來,像適合autorization不同的HTTP頭,但目前尚不清楚對我,爲什麼你需要支持例如與oauth基本一致,也許它會更有意義地使用更簡單的基礎。

您需要的大部分信息在此收集http://www.asp.net/web-api/overview/security

+0

很好的解釋。我不想使用機器密鑰來創建令牌,因爲OWIN框架默認使用此密鑰。有沒有其他解決方法來使用證書?我有兩個資源服務器,是否可以將相同的令牌發送到這兩個應用程序,以便可以使用他們的證書來驗證令牌:} –

相關問題