我有一个基本的Web API 2设置与Visual Studio 2015沿着IIS 10.0在Windows 10. 401请求(窗口身份验证)不断提示我登录。我可以登录,它接受我的凭据,但我做什么都摆脱不了这个提示。
我有:
- 将
<authentication mode="Windows" />
添加到<system.web>
下的web.config中 - 已禁用通过IIS的匿名身份验证
- 已通过IIS启用Windows身份验证
我是否需要在我的控制器或WebApiConfig中添加一些东西来请求像/api/core/getweatherdata这样的URL,而不提示登录?
4条答案
按热度按时间0s7z1bwu1#
我能想到两种可能发生的情况。
1.您正在使用的地址不是Intranet地址,它会要求进行身份验证。Reference Here
vvppvyoh2#
您很可能只需要更改计算机上的设置。若要在没有提示的情况下进行Windows身份验证,您需要相应地配置Internet选项。
控制面板〉Internet选项〉安全选项卡〉选择正确的“区域”〉自定义级别〉滚动到底部。
2ic8powd3#
****Windows身份验证时出现的提示窗口很可能是由于401拒绝访问
虽然我不确定一些必答题能够告诉完全一样的原因一样
**A-**此处使用的是什么身份验证提供程序?
**B-**您是否需要Kerberos?您是否使用自定义身份?
我认为使用Kerberos身份验证作为Windows身份验证的提供程序是最佳选择,为此,请确保以正确的方式仔细执行了以下所有步骤
1-在Active Directory上创建一个自定义帐户,从“AD属性”上的“委派”选项卡委派此帐户,以确保它可以使用Kerberos
2-使用此自定义标识作为应用程序池自定义标识用户,转到应用程序池,选择您的应用程序池,右键单击,自定义标识并设置您刚创建的用户。
3-转到应用程序身份验证选项卡,禁用所有authentication providers,包括模拟(不仅是匿名),但Windows身份验证除外
4-右键单击Windows身份验证,选择提供程序,然后选择“协商/Kerberos”作为其下的主提供程序“协商”Authentication Providers
5-设置服务主体名称,打开CMD,将SPN设置为服务帐户,这样,如果服务帐户为“lab\testuser”,服务器域为“server 1A”,其FQDN(完全限定的域名)为“server1A.test.com“,则键入以下命令:
清除Kerberos缓存票据也非常重要,因为您将多次进行更改,并且除非清除该高速缓存,否则您不会看到它生效,因此您需要使用[KLIST工具][3],通过键入命令klist purge来清除它
然后您需要清除DNS缓存,在CMD“Run as admin”上键入以下命令重新启动IIS
祝您好运,如果您有任何其他问题,或者需要澄清任何问题,请告诉我
daolsyd04#
我在VS2017中开发Web API 2并使用IIS express时出现了这些症状。在默认的WebApiConfig.cs中有这样的chuck:
config.SuppressDefaultHostAuthentication();
是阻止web.config(我猜还有IIS)身份验证细节的方法。在我的例子中,注解掉该行确实起到了作用,在web.config中是这样的:请记住,这并不能解决“双跳”的情况,即网站上经过身份验证的用户将凭据传递给后端API...但这是另一回事。