【问题标题】:How to disable windows authentication for WEB API inside an ASP.NET MVC 3 application如何在 ASP.NET MVC 3 应用程序中禁用 WEB API 的 Windows 身份验证
【发布时间】:2012-08-06 12:40:14
【问题描述】:

我有一个带有 Windows 身份验证的 ASP.NET MVC 3 应用程序。现在我已经添加了 web api(nuget 包)并希望匿名访问(稍后我将添加一个 api 密钥)。但我还没有设法让它工作。

我所有的 WEB API 控制器都在“/api”路径下,并且没有一个具有 Authorize 属性。

这是我当前的 web.config(我删除了所有与此事无关的点点滴滴):

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.web>
    <authentication mode="Windows" />
    <httpRuntime maxRequestLength="102400" requestPathInvalidCharacters="&lt;,&gt;,*,:,&amp;,\" />
    <authorization>
      <deny users="?" />
    </authorization>
    <roleManager enabled="true" defaultProvider="AspNetSqlRoleProvider">
      <providers>
        <clear />
        <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="..." applicationName="..." />
      </providers>
    </roleManager>
    <profile enabled="false" defaultProvider="AspNetProfileProvider">
      <providers>
        <clear />
        <add name="AspNetProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="..." applicationName="..." />
      </providers>
      <properties></properties>
    </profile>
    <customErrors mode="RemoteOnly" defaultRedirect="~/Error/Generic">
      <error statusCode="404" redirect="~/Error/NotFound" />
      <error statusCode="403" redirect="~/Error/AccessDenied" />
    </customErrors>
  </system.web>
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <security>
      <requestFiltering allowDoubleEscaping="true"></requestFiltering>
    </security>
  </system.webServer>
  <location path="Error">
    <system.web>
      <authorization>
        <allow users="*" />
      </authorization>
    </system.web>
  </location>
  <location path="Scripts">
    <system.web>
      <authorization>
        <allow users="*" />
      </authorization>
    </system.web>
  </location>
  <location path="Content">
    <system.web>
      <authorization>
        <allow users="*" />
      </authorization>
    </system.web>
  </location>
  <location path="api">
    <system.web>
      <authorization>
        <allow users="*" />
      </authorization>
    </system.web>
  </location>
</configuration>

我所有的请求都得到“HTTP Error 401.2 - Unauthorized”,但是当我输入一些有效的 Windows 凭据时,请求就会成功执行。

那么,如何禁用我的 WEB API 的 Windows 身份验证?提前致谢。

【问题讨论】:

    标签: asp.net-mvc-3 authentication asp.net-web-api windows-authentication


    【解决方案1】:

    我能够在我的 MVC 项目属性中解决此问题并启用匿名身份验证。

    【讨论】:

    • 作为参考,你能发布你的解决方案吗?
    【解决方案2】:

    要禁用身份验证,您可以转到 launchSettings.json,或者在查找输入字段中输入“匿名”。

    然后您会在文件顶部找到“anonymousAuthentication”,您必须将其设置为 true。

    以后你总是可以再次切换到 false。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-01
      • 2017-10-29
      • 1970-01-01
      • 2014-02-05
      • 1970-01-01
      • 2017-10-27
      • 2015-06-15
      相关资源
      最近更新 更多