Por*_*iey 7 .net c# authentication mobile azure
我可以使用.NET的HttpClient来访问Azure Mobile服务吗?
如何使用HttpClient 对移动服务自带的自定义身份验证/授权模式进行身份验证?
这总是返回401,因为我没有传递任何身份验证凭据:
var client = new HttpClient();
var response = client.GetAsync("http://localhost:49190/api/test").Result;
Run Code Online (Sandbox Code Playgroud)
此外,为什么我使用移动服务客户端,为什么我的应用程序密钥,主密钥或用户身份验证密钥总是返回(401)未授权?
客户:
var mobileClient = new MobileServiceClient("http://localhost:49190/", "[my key]");
var response = mobileClient.InvokeApiAsync("test").Result;
Run Code Online (Sandbox Code Playgroud)
服务方面:
[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";
}
}
Run Code Online (Sandbox Code Playgroud)
Por*_*iey 12
"我可以使用.NET的HttpClient来访问Azure Mobile服务吗?" 简短的回答是肯定的.简单的方法是将其添加到客户端的标头:
var client = new HttpClient();
client.DefaultRequestHeaders.Add("X-ZUMO-APPLICATION", "[my key]");
Run Code Online (Sandbox Code Playgroud)
但要小心,如果你使用的是本地托管版本,你需要确保你...
强制服务认为它是托管的,以便启用身份验证.
(在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>
Run Code Online (Sandbox Code Playgroud)如果没有#1,整个服务的身份验证将被完全忽略,因此您不知道您在客户端中添加身份验证的方式是否正常.如果没有#2,您可以将密钥添加到客户端(您从Azure获得),但它将始终返回401.这可能是关于使用MobileServiceClient始终返回401 的第二个问题的答案.
最后,您可以使用三种不同的标题.您可以使用每个不同级别的授权.从这个MSDN文档:
作者说明:我个人很难让这个工作,并且对于这种特定的风格有限或缺少文档,我想写这个Q/A. 如果您认为我应该添加任何东西,请告诉我.
| 归档时间: |
|
| 查看次数: |
3490 次 |
| 最近记录: |