[英]Azure Mobile Services, HttpClient, Authorization
我可以使用 .NET 的 HttpClient 來訪問 Azure 移動服務嗎?
如何使用 HttpClient 在自定義身份驗證/授權模式中使用移動服務自己的身份驗證?
這總是返回 401,因為我沒有傳入任何身份驗證憑據:
var client = new HttpClient();
var response = client.GetAsync("http://localhost:49190/api/test").Result;
此外,為什么當我使用Mobile Service Client 時,為什么我的應用程序密鑰、主密鑰或用戶身份驗證密鑰總是返回 (401) Unauthorized?
客戶:
var mobileClient = new MobileServiceClient("http://localhost:49190/", "[my key]");
var response = mobileClient.InvokeApiAsync("test").Result;
服務端:
[AuthorizeLevel(AuthorizationLevel.Application)]
public class TestController : ApiController
{
public ApiServices Services { get; set; }
// GET api/Test
public string Get()
{
Services.Log.Info("Hello from custom controller!");
return "Hello";
}
}
“我可以使用 .NET 的 HttpClient 訪問 Azure 移動服務嗎?” 簡短的回答是肯定的。 簡單的方法是將 this 添加到客戶端的標頭中:
var client = new HttpClient();
client.DefaultRequestHeaders.Add("X-ZUMO-APPLICATION", "[my key]");
不過要小心,如果您使用的是本地托管版本,您需要確保您已經...
強制服務認為它是托管的,以便啟用身份驗證。
(在 App_Start/WebApiConfig.cs: config.SetIsHosted(true);
將應用程序密鑰和主密鑰添加到 web.config:
<appSettings> <add key="MS_MasterKey" value="[your master key]" /> <add key="MS_ApplicationKey" value="[your app key]" /> </appSettings>
如果沒有 #1,跨服務的身份驗證將被完全忽略,因此您不知道您在客戶端中添加的身份驗證是否正常工作。 如果沒有 #2,您可以隨心所欲地將密鑰添加到客戶端(從 Azure 獲得),但它總是會返回 401。這可能是關於使用MobileServiceClient
總是返回 401 的第二個問題的答案。
最后,您總共可以使用三個不同的標題。 您可以根據不同的授權級別使用每一個。 從這個MSDN 文檔:
作者注:我個人一直在努力使其工作,並且由於這種特定風格的文檔有限或缺失,我想寫這個 Q/A。 如果您認為我應該添加任何內容,請告訴我。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.