2013-11-24 75 views
4

我試圖對由另一個MVC網站訪問的MVC的Web API配置身份驗證。我已經在web.config中嘗試了很多東西,來自SO的許多建議。然而一切都無濟於事。如何使用MVC Web API進行身份驗證?

我使用下面的代碼從MVC網站:

var web = new WebClient(); 
web.UseDefaultCredentials = false; 
web.Credentials = new NetworkCredential(username, password); 

我然後使用該Web客戶端來調用僅包含API控制器其他MVC網站的方法。如果沒有身份驗證,所有工作都應該如此,但我無法使身份驗證正常工作提出請求時,我得到的是返回了401的異常(這是一件好事,如果你問我,但它不會出現發送憑據)。

我也試圖把用戶名和密碼的網址,但沒有任何工作。

這裏是Web API站點的web.config文件中的相關章節:

<authentication> 
     <forms 
     cookieless="UseUri" 
     enableCrossAppRedirects="false"> 
     <credentials passwordFormat="Clear"> 
      <user name="site" password="XYZ123!"/> 
     </credentials> 
     </forms> 
    </authentication> 
    <authorization> 
     <deny users="?"/> 
    </authorization> 

我想提出一個用戶名/密碼,那裏只是爲了確保它是調用網站方法。我的API控制器具有「Authorize」屬性。

我的問題是:我如何添加認證到Web API的網站,這樣我可以使用的身份驗證就可以調用方法?

回答

4

使用基本認證。您可以創建一個AuthorizationAttribute來驗證授權標頭中的用戶名/密碼,並在未經授權時返回401響應。

查看this post瞭解更多信息。

1

您可以使用基本身份驗證代替表單身份驗證,如this answer中所示。還有其他認證方式可能。例如this blog post中所示的基於令牌的驗證。

相關問題