Как установить код статуса HTTP с помощью идентификатора в плагинах linkerd
Я использую linkerD для установки плагина авторизации на Java. В настоящее время я использую идентификатор, чтобы перехватить запрос и проверить, авторизован ли пользователь. (В качестве примера: https://github.com/linkerd/linkerd-examples/tree/master/plugins/header-classifier)
Если пользователь не авторизован, запрос не должен доходить до серверной службы. Я выбрасываю исключение во время выполнения в таких случаях (дайте мне знать, если есть другой способ предотвратить запрос до бэкэнда). Linkerd отправляет ответ как 502 Bad Gateway. У Linkerd должен быть механизм, с помощью которого я могу указать код состояния HTTP, который я хочу отправить обратно.
Я попытался использовать responseClassifier вместе с идентификатором, но похоже, что responseClassifier не вызывается при возникновении исключения.
1 ответ
В настоящее время невозможно отправить обратно пользовательские коды ответов из плагина идентификатора, основываясь на комментариях к этой проблеме:
Это ограничение использования интерфейса плагина идентификатора для авторизации. Если вы предпочитаете, вы можете вернуть исключение UnidentifiedRequest, которое вернет 400 неверных запросов. В долгосрочной перспективе мы хотели бы добавить новый интерфейс плагина специально для авторизации, который позволил бы лучше контролировать ответы на ошибки.
Но linkerd планирует добавить лучшую поддержку плагинов авторизации в будущем выпуске.