![](/img/trans.png)
[英]Enabling Windows and Basic Authentication for ASP.NET Web API 2 Application
[英]How to use Basic Authentication to access Asp.Net MVC 4 Intranet Web API method which uses Windows Authentication from a Windows Service?
这是一些背景!
我使用默认的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服务中向RESTful API方法提供Windows Credentials
...因为没有用户可以使用该系统...我希望您能理解我的意思:
我尝试了什么
Anonymous Authentication
为True
。 然后在网络api方法上使用AllowAnonymous
属性。 不工作。 我为什么不创建另一个AuthorizationFilterAttribute
,它仅应用于将要从Window Service访问的API方法。 这样,新功能将覆盖现有的Windows Authentication
功能,并且我能够为BASIC身份验证提供我选择的用户名/密码,该用户名/密码只能在Windows服务中使用。 因此,我在Rick Strahl的博客的帮助下创建了一个新的AuthorizationFilterAttribute
类。
[AllowAnonymous] [AuthorizeCallFromWindowsService] public IssueResponse CloseEmployeeLicenses(int userID) { return null; }
同样,这没有用。 该API方法需要相同的Windows身份验证凭据,我想使用自定义的硬编码用户名/密码。
你会提出什么? 提前致谢。
我有一个类似的场景,我决定在我们的应用程序中创建一个新的用户类型,称为服务用户。 我们在域中创建了一个服务帐户,当我们在服务器(位于同一网络中)上安装Windows服务时,我们强制Windows服务作为服务帐户(具有网络域\\用户名和密码)运行。 实际上,我们在应用程序中创建了3个服务帐户,每个帐户分别针对每个环境:ServiceAccountDev,ServiceAccountUAT和ServiceAccountPROD,并在适当时禁用/启用了每个帐户。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.