#spring-boot #spring-security #spring-boot-actuator
#пружинный загрузчик #пружинная защита #пружинный загрузчик-привод
Вопрос:
Я нажимаю на bus-refresh
конечную точку из моего Jenkins, и я хотел, чтобы эта конечная точка не была защищена.
Ниже представлено мое приложение.yml
management:
endpoints:
web:
exposure:
include: health,refresh,bus-refresh
base-path: /
health:
ldap:
enabled: false
Ниже приведена моя http-конфигурация в spring-boot
http
.anonymous()
.and()
.authorizeRequests()
.antMatchers("/swagger-ui.html", "/error", "/swagger-resources/**", "/webjars/**", "/v2/api-docs", "/test/**", "/api/v1/calculate/**").permitAll()
.antMatchers("/health", "/refresh/", "/bus-refresh/").permitAll()
.anyRequest().authenticated()
.and()
.oauth2ResourceServer()
Теперь, когда я нажимаю curl --request GET http://localhost:8080/health
, я получаю правильный ответ, как показано ниже
{"status":"UP"}
но когда я нажимаю curl --request POST http://localhost:8080/bus-refresh
или curl --request POST http://localhost:8080/refresh
я получаю 403 и 401
{"timestamp":"2020-08-26T10:46:26.370 00:00","status":403,"error":"Forbidden","message":"","path":"/bus-refresh"}
Я перепробовал все, что мог, но все еще не могу вывести оба refresh
и bus-refresh
из системы безопасности. Нужна помощь
Комментарии:
1. Вы поняли это? У меня такая же проблема, и я понятия не имею, что не так.
2. нет .. я предпочел защитить конечную точку и заставил свой конвейер извлекать токен-носитель каждый раз, когда он попадает в конечную точку
Ответ №1:
Я спрашиваю это на всякий случай, потому что я не видел этого в вашем примере. В вашей конфигурации у вас есть:
http
...
.antMatchers("/health", "/refresh/", "/bus-refresh/").permitAll()
...
В конечной точке работоспособности вы не установили косую черту в конце, поэтому при вызове curl --request GET http://localhost:8080/health
вы получаете правильный ответ, как вы и сказали. Но затем вы вызвали refresh
и bus-refresh
без завершающей косой черты, и обе конечные точки были определены с ее помощью. Вы пытались свернуть эти конечные точки, как они были определены в вашей конфигурации http? (с завершающей косой чертой)
Надеюсь, это поможет, дайте мне знать, если это сработает.