2016-07-11 127 views
2

我知道這是非常常見的問題。但我真的不知道如何整合它。 我想添加身份驗證到我的web api服務。現在我創建了一個控制檯應用程序來調用服務的方法。Web API中的身份驗證

我已經經歷了這個blog。我只是想實現本文中提到的認證過濾器。

我想知道我怎麼能傳遞憑據了HTTPClient一起從我的控制檯應用程序,獲取這些東西對Web API和驗證他們的身份。

我已經創建了認證過濾器,但它沒有調用認證過濾器的AuthenticateAsync方法。

要通過HTTP客戶端我已經這樣做了:

public void GetData() 
    { 
     HttpClient cons = new HttpClient(); 
     cons.BaseAddress = new Uri("http://localhost:50524/"); 
     cons.DefaultRequestHeaders.Accept.Clear(); 
     cons.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 
     var data = Encoding.ASCII.GetBytes("Ankita:ankita123"); 
     var header = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(data)); 
     cons.DefaultRequestHeaders.Authorization = header; 

     //MyAPIPost(cons).Wait(); 
     MyAPIGet(cons).Wait(); 
    } 
+0

看看這個博客帖子:http://code.tutsplus.com/tutorials/securing-aspnet-web-api--cms-26012 – peco

回答

0

我已成功實施使用this文章的身份驗證。在那個過濾器屬性被實現。

3

教你如何實現的Web API認證將花費大量的時間。你最好堅持在線教程。

您已閱讀的博客處理有關ASP.NET的不同身份驗證。由於您已將問題標記爲ASP.NET Web API 2,因此我建議使用基於標記的身份驗證,並使用OWIN中間件。檢查this了。本指南使用控制檯應用程序來檢查對Web API的請求。

它的要點是...

客戶端>令牌提供商(生成有效的用戶令牌)>網絡API>檢查令牌是有效的(現有的,未過期)>驗證!

+0

我需要實現屬性的類型。這樣我們就可以在全球或特定方法中使用它。可能嗎? – Ankita

+0

如果你想實現認證,使用Web API你可以用'[Authorize]'屬性來標記方法或web api控制器。當然,您必須按照鏈接教程中所示實施提供者。 –

+0

我同意,基於令牌的認證比傳遞密碼更好。 – Alex

0

考慮你正在努力與HttpClient的訪問API,你可以在創建時,它傳遞HttpClientHandler的一個實例,它允許你當它執行的請求設置將要使用的憑據:

new HttpClient(new HttpClientHandler { Credentials = new NetworkCredential(userName, password) }) 

希望它有幫助!