Как настроить «работоспособную» конечную точку привода для работы с аутентификацией токена? - PullRequest
0 голосов
/ 28 февраля 2019

Мы используем проверку подлинности на основе токенов (с помощью Spring Security) в нашем приложении Spring Boot 2.Сейчас я представляю Spring Boot Actuator.Я хотел бы настроить конечную точку /health так, чтобы она отображалась без каких-либо разрешений, но отображала сведения о проверках работоспособности только при наличии разрешения.

Я нашел свойство management.endpoint.health.show-details=when_authorized, которое должно быть полезным, но сейчас я борюсь с конфигурацией Spring Security, чтобы все могли видеть:

{
  "status": "UP"
}

в /actuator/health, пока пользователи авторизуютсяс токеном должно увидеть:

{
  "status": "UP",
  "details": { ... }
}

Сталкивались ли вы с подобной проблемой?Как вы справились с этим?

1 Ответ

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

ОК, теперь я понимаю, если вы отключите безопасность в своем приложении и сохраните management.endpoint.health.show-details=when_authorized, вы получаете только поле status?Если я прав, это не проблема, взгляните в весенний класс HealthWebEndpointResponseMapper на map метод.Как я выяснил, этот метод перезаписывает (удаляет поле details из ответа), если условие в if истинно:

public WebEndpointResponse<Health> map(Health health, SecurityContext securityContext,
        ShowDetails showDetails) {
    if (showDetails == ShowDetails.NEVER
            || (showDetails == ShowDetails.WHEN_AUTHORIZED
                    && (securityContext.getPrincipal() == null
                            || !isUserInRole(securityContext)))) {
        health = Health.status(health.getStatus()).build();
    }
    Integer status = this.statusHttpMapper.mapStatus(health.getStatus());
    return new WebEndpointResponse<>(health, status);
}

В вашем случае, я полагаю, вы установили вышеупомянутое свойство вwhen_authorized также вы отключили аутентификацию, поэтому принципал равен нулю.Не уверен, что я прав, но надеюсь, что дал вам подсказку.:)

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