Как отключить проверку подлинности Windows для WEB API в приложении ASP.NET MVC 3
У меня есть приложение ASP.NET MVC 3 с аутентификацией Windows. Теперь я добавил к нему 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="<,>,*,:,&,\" />
<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, запрос выполняется успешно.
Итак, как я могу отключить проверку подлинности Windows для моего веб-API? заранее спасибо.
2 ответа
Мне удалось исправить это в свойствах моего проекта MVC и включить анонимную аутентификацию.
Чтобы отключить аутентификацию, вы можете перейти к launchSettings.json или просто ввести «anonymous» в поле ввода поиска.
В верхней части файла вы найдете «anonymousAuthentication», для которого вам нужно будет установить значение true.
Позже вы всегда можете снова переключиться на false.