如何使用基本身份验证访问Asp.Net MVC 4 Intranet Web API方法,该方法使用Windows服务中

本文关键字:方法 API 服务 Windows Web Intranet 身份验证 何使用 访问 Asp MVC | 更新日期: 2023-09-27 18:29:49

这里有一些背景!

我使用默认的intranet模板开发了一个小型Asp.NetMVC4 intranet站点,并且使用Windows Authentication。我还添加了一个Web Api Controller,并在其中编写了一些REST服务方法,我使用JQuery从网站页面访问这些方法。Web.Config包含以下内容:

<authentication mode="Windows" />
<authorization>
    <deny users="?" />
</authorization>

该网站运行良好,需要用户提供他们的Windows Credentials才能访问该网站。

问题

我还在开发一个windows服务,它将在网络上的另一台计算机上运行,并将访问我在上一步中创建的Windows API controller的一个操作。现在的问题是,我无法从Windows服务中向RESTful API方法提供Windows Credentials。。。因为没有用户可能使用该系统。。。我希望你明白我的意思:

我试过什么

  1. 在Web项目的属性中允许Anonymous AuthenticationTrue。然后使用了AllowAnonymous属性的webapi方法。不起作用
  2. 我想为什么不创建另一个AuthorizationFilterAttribute,它只应用于要从窗口服务访问的API方法。这样,新功能将覆盖现有的Windows Authentication功能,我将能够提供我选择的用于BASIC身份验证的用户名/密码,该身份验证将仅在Windows服务中使用。因此,我在Rick Strahl的博客中创建了一个新的AuthorizationFilterAttribute类。

    [AllowAnonymous]
    [AuthorizeCallFromWindowsService]    
    public IssueResponse CloseEmployeeLicenses(int userID)
    {
        return null;
    }
    

同样,这没有奏效。API方法需要相同的Windows身份验证凭据,我想使用自定义硬编码的用户名/密码。

你会提出什么建议?提前谢谢。

如何使用基本身份验证访问Asp.Net MVC 4 Intranet Web API方法,该方法使用Windows服务中

我有一个类似的场景,我决定在我们的应用程序中创建一个名为Service user的新用户类型。我们在域中创建了一个服务帐户,当我们在服务器(位于同一网络中)上安装windows服务时,我们强制windows服务作为服务帐户(使用网络域''用户名和密码)运行。实际上,我们在应用程序中创建了3个服务帐户,每个环境一个:ServiceAccountDev、ServiceAccountUAT和ServiceAccountPROD,并根据需要禁用/启用了每个帐户。