如何在ASP.Net Web API中为特定控制器启用Windows身份验证



我在想是否有办法只对特定ASP.NetWebneneneba API控制器的特定操作启用Windows身份验证。我的Web API Web服务有几个控制器,它们有许多操作,但只有一个控制器的一个操作需要Windows身份验证。此web服务使用web API 2.1实现,并托管在IIS(v7.5及更高版本)中。尽管这是一个intranet web服务,但我不想在不需要的控制器和操作上启用windows身份验证。请告诉我是否有方法为特定控制器和操作启用windows身份认证。

我的web服务代码与下面的代码类似。只有controller1实现的端点api/controller1/action1。action1需要windows身份验证。其余操作不需要Windows身份验证:

[RoutePrefix("api/controller1")]
public class Controller1: ApiController
{
    [Route("action1")]
    public HttpResponseMessage Action1()
    {
        return Request.CreateResponse<object>(HttpStatusCode.OK, null);
    }
    [Route("action2")]
    public HttpResponseMessage Action2()
    {
        return Request.CreateResponse<object>(HttpStatusCode.OK, null);
    }
}

[RoutePrefix("api/controller2")]
public class Controller2 : ApiController
{
    [Route("action1")]
    public HttpResponseMessage Action1()
    {
        return Request.CreateResponse<object>(HttpStatusCode.OK, null);
    }
    [Route("action2")]
    public HttpResponseMessage Action2()
    {
        return Request.CreateResponse<object>(HttpStatusCode.OK, null);
    }
}

谢谢,Rita

这是您想要的吗?将其添加到配置文件中。

<location path="api/controller1">
  <system.web>
    <authorization>
      <deny users="?" />
    </authorization>
  </system.web>
</location>

我也遇到了同样的问题。解决方案是

  1. 在承载API的IIS网站中启用Windows身份验证。如果您正在使用OWIN自托管,请参阅此SO讨论

  2. 然后,在需要Windows身份验证的控制器或控制器操作中,只需添加"Authorize"属性。

    [授权]公共异步任务GetDocumentContent([FromUri]DocumentContentRequest请求){

    }

就是这样。

最新更新