【问题标题】:How to supply credentials for a DNN WebAPI endpoint?如何为 DNN WebAPI 端点提供凭据?
【发布时间】: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


    【解决方案1】:

    你试过了吗

    [DnnAuthorize(RequireHost=true)]

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

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

    Codeplex: dnndashservice

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-08-04
      • 2021-02-15
      • 1970-01-01
      • 2018-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多