2013-02-27 62 views
4

我有一个DNN 7的网站,像这样的Web服务端点:如何为DNN WebAPI端点提供凭据?

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]属性,以便任何人和他们的狗都可以使用您的Web服务!”如果您提供的服务用于公共消费,这很好。这不是其中之一。

那么提供主机凭证的正确方法是什么,以便通话能够正常工作?我真的不确定。

回答

0

您是否尝试过做

[DnnAuthorize(RequireHost=true)]

不知道是不是因为我只是做了它的实际登录的用户,而不是从通过用户名和密码凭据的外部源,将工作。

你也许可以看看这个codeplex项目了解更多信息。

Codeplex: dnndashservice

相关问题