我可以使用.NET的HttpClient来访问Azure移动服务吗?
如何使用HttpClient在custom Authentication/Authorization patterns中使用移动服务自带的身份验证?
这总是返回401,因为我没有传递任何身份验证凭据:
var client = new HttpClient();
var response = client.GetAsync("http://localhost:49190/api/test").Result;
此外,当我使用Mobile Service Client时,为什么我的应用程序密钥,主密钥或用户身份验证密钥总是返回(401)未经授权?
客户:
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 doc:
作者注:我个人为此而努力,并且由于该特定样式的文档有限或缺少,我想编写此Q / A。如果您认为我应该添加任何内容,请告诉我。
我知道这个线程有点旧,但是,谁能解释一下如何在Node.js中实现它?
我正在使用Azure App Services和MobileServiceClient像这样将客户端SQLite表与Azure SQL数据库同步:await client.SyncContext.PushAsync();
问题是-我不想在App Service上调用App Service身份验证,因为在实例化MobileServiceClient时我已经登录了用户。另外,该应用程序服务设置了匿名访问权限,我要做的就是传递一个应用程序密钥以允许服务访问。
谁能详细说明?
谢谢