【发布时间】:2013-02-13 23:47:00
【问题描述】:
我有一个 DNN 7 网站,其网络服务端点如下:
public class DNNRoleManagementServiceController: DnnApiController
{
//[AllowAnonymous]
[RequireHost]
[HttpGet]
public HttpResponseMessage ManagePortalUserToRole(int PortalID, int UserID, int RoleID, bool RemoveFromRole )
{
//stuff
}
}
它是 AllowAnonymous 用于开发,现在它是 RequireHost,因为您的端点上的安全性很好。这些端点只能由我们的系统使用,因此[RequireHost] 似乎是正确的身份验证级别。
我有我的 c# 库来调用这个端点:
WebClient webClient = new WebClient();
Uri uri = new Uri(uriString.ToString());
webClient.Credentials = new NetworkCredential("host", "password");
webClient.DownloadStringCompleted += GetStringCompleted;
webClient.DownloadStringAsync(uri);
即使使用正确的密码,我得到的只是 400 或 401 响应。所以很明显我以错误的方式提供了我的凭据。只是,正确的方法是什么?我在 DNN WebAPI 上找到的所有文档都是“应用[AllowAnonymous] 属性,以便任何人和他们的狗都可以使用您的网络服务!”如果您提供的服务是供公众消费的,那就太好了。这不是其中一种情况。
那么,提供主机凭据以使调用生效的正确方法是什么?我真的不确定这里。
【问题讨论】:
标签: c# dotnetnuke asp.net-web-api