4

我有一个 DNN 7 网站,其 Web 服务端点如下:

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]属性,以便任何人和他们的狗都可以使用您的网络服务!” 如果您提供的服务是供公众消费的,那就太好了。这不是其中一种情况。

那么提供主机凭据以使调用有效的正确方法是什么?我真的不确定这里。

4

1 回答 1

0

你试过做

[DnnAuthorize(RequireHost=true)]

不知道它是否会起作用,因为我只为实际登录的用户而不是从外部来源传递用户名和密码凭据。

您也许可以查看这个 codeplex 项目以获取更多信息。

Codeplex:dnndashservice

于 2013-03-12T11:02:38.280 回答