Я создаю внутреннее сервисное приложение 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 для возврата в этом случае?