0

这里有一些背景!

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

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

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

问题

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

我试过什么

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

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

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

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

4

1 回答 1

0

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

于 2013-09-10T14:19:49.337 回答