Какой код состояния HTTP при отсутствии учетных данных клиента для сторонней службы? - PullRequest
0 голосов
/ 28 января 2020

Я создаю внутреннее сервисное приложение Spring Boot, которое предоставляет единый API для различных сервисов.

Мое приложение может вызывать различные другие API от имени пользователя (т.е. выполнять запрос), предоставляя единый, четко определенный однородный интерфейс.

Мое приложение имеет собственную стандартную аутентификацию. Любой сбой приведет к 401 НЕСАНКЦИОНИРОВАННО с пустым телом. Кроме того, некоторые из этих API требуют учетные данные, которые мои пользователи могут предоставить моему приложению. (это внутреннее приложение. Мои пользователи и я знаем о влиянии безопасности на управление сторонними учетными данными).

Теперь я ищу правильный код состояния HTTP в диапазоне 400 для возврата когда пользователь правильно аутентифицирован в моем приложении, но мне не хватает необходимых учетных данных, чтобы можно было выполнить запрос к удаленному API от имени пользователя.

У меня было несколько вариантов:

  • 401 UNAUTHORIZED - кажется, подходит лучше всего, но я не люблю повторно использовать тот же код состояния HTTP, который я использую для проверки подлинности моего приложения. Мне нужно было бы добавить тело и сообщение, чтобы различать guish между 2.
  • 407 PROXY_AUTHENTICATION_REQUIRED - Кажется семантически подходящим, так как мое приложение действует как прокси, но очень нестандартно, и я не сможет соответствовать спецификациям для отправки заголовков информации аутентификации прокси. Кроме того, все наоборот. Прокси (мое приложение) в порядке, служба, стоящая за ним, требует аутентификации.
  • 412 PRECONDITION_FAILED - Предварительные условия не предназначены для логики приложения c
  • 428 PRECONDITION_REQUIRED - То же, что и выше.

Какой будет хороший код состояния HTTP для возврата в этом случае?

1 Ответ

0 голосов
/ 28 января 2020

Если клиент не отправляет сторонние учетные данные в службу, а сам сервер управляет учетными данными, вы должны смотреть в диапазоне 500.

400 HTTP-коды серии для неверной конфигурации клиента или ошибки с content.

500 HTTP-коды серии указывают на проблему с работой сервера.

В описанном вами случае, я полагаю, вы указали, что сервер настроен с учетными данными. Хотя сервер может получать код серии 400 при выполнении запроса от имени клиента, запрос клиента, который, как мы надеемся, синтаксически действителен, должен ответить кодом серии 500, указывающим, что он не может обработать запрос и предоставить соответствующий код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...