Веб-API 403, запрещенный вне сети с использованием токена на предъявителя - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть веб-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=""

1 Ответ

0 голосов
/ 15 февраля 2019

Возникла проблема с брандмауэром, которая не позволяла клиентам напрямую проходить проверку подлинности.Мне нужно было, чтобы у ИТ-ресурса были открыты свойства Forefront TMG, перейдите на вкладку «Делегирование аутентификации» и установите для метода значение, отличное от «Без делегирования, и клиент не может аутентифицироваться напрямую»

Этот поток SO, вероятно, такой жерешение, но на плакате не указано, каким именно было их решение: WebAPI: 403 Запрещено после публикации сайта

...