У меня есть веб-API, использующий oAuth2, который имеет смесь API-интерфейсов, которые разрешают анонимные и защищенные вызовы.Я развернул код на отдельном сервере в моей сети и проверил с помощью RESTer (аналог POSTMAN), что вызовы работают.Если я выполняю те же вызовы из-за пределов сети, происходит сбой только тех вызовов, которые настроены на использование токена ExternalBearer.Анонимные звонки успешны.
Я проверил это решение, которое не работало для меня. HTTP 403 Запрещено: доступ запрещен. ASP.NET Web API
Я также гарантировал на сервере развертывания, что учетная запись пользователя имеет доступ к каталогу с полным доступом.
Мои анонимные вызовы (кроме вызова / токена) имеют аннотации [AllowAnonymous] и [HttpPost].Мои безопасные вызовы имеют аннотации [HostAuthentication (DefaultAuthenticationTypes.ExternalBearer)] и [HttpPost].
[Authorize]
[RoutePrefix("api/Lookups")]
public class MySettingsClass : ApiController
/* Constructor omitted for readability*/
[HostAuthentication(DefaultAuthenticationTypes.ExternalBearer)]
[HttpPost]
[Route("GetSettings")]
public Settings GetSettings(GetSettingsCommand command)
{
//Do something here
return settings;
}
На данный момент я подозреваю, что IIS не настроен должным образом или брандмауэр что-то делает, ноЯ не уверен.Я проверил журналы IIS на сервере и вижу поступающий запрос. К сожалению, журнал ничего не говорит о том, что получил запрос.Журнал дает sc-статус 401 для запроса, который отличается от показанного 403.
Фактическая ошибка 403, отображаемая на стороне клиента:
403 Forbidden ( The server denied the specified Uniform Resource Locator(URL). Contact the server administrator.)
Обновление: когдаЯ включаю трассировку IIS Failed Request, я получаю это предупреждение в журнале.
ModuleName="ManagedPipelineHandler", Notification="EXECUTE_REQUEST_HANDLER", HttpStatus="401", HttpReason="Unauthorized", HttpSubStatus="0", ErrorCode="The operation completed successfully.(0x0)", ConfigExceptionInfo=""