如何使用基本身份验证访问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
。。。因为没有用户可能使用该系统。。。我希望你明白我的意思:
我试过什么
- 在Web项目的属性中允许
Anonymous Authentication
到True
。然后使用了AllowAnonymous
属性的webapi方法。不起作用 我想为什么不创建另一个
AuthorizationFilterAttribute
,它只应用于要从窗口服务访问的API方法。这样,新功能将覆盖现有的Windows Authentication
功能,我将能够提供我选择的用于BASIC身份验证的用户名/密码,该身份验证将仅在Windows服务中使用。因此,我在Rick Strahl的博客中创建了一个新的AuthorizationFilterAttribute
类。[AllowAnonymous] [AuthorizeCallFromWindowsService] public IssueResponse CloseEmployeeLicenses(int userID) { return null; }
同样,这没有奏效。API方法需要相同的Windows身份验证凭据,我想使用自定义硬编码的用户名/密码。
你会提出什么建议?提前谢谢。
我有一个类似的场景,我决定在我们的应用程序中创建一个名为Service user的新用户类型。我们在域中创建了一个服务帐户,当我们在服务器(位于同一网络中)上安装windows服务时,我们强制windows服务作为服务帐户(使用网络域''用户名和密码)运行。实际上,我们在应用程序中创建了3个服务帐户,每个环境一个:ServiceAccountDev、ServiceAccountUAT和ServiceAccountPROD,并根据需要禁用/启用了每个帐户。