Artigo Diretório
Um, conheça o Endpoint
Spring Boot Actuator fornece alguns pontos de extremidade do atuador para monitorar e interagir com seu aplicativo. Por exemplo, quando um projeto falha, ele automaticamente alarma, monitora o conteúdo, o status operacional, etc., e dá um aviso antecipado.
API oficial de referência: clique para referência
Dois, exemplo simples
(1) Adicionar dependência
(2) Exceto para a porta de desligamento que é fechada por padrão, outras portas estão abertas por padrão
É preciso entender que isso não significa que a extremidade aberta exposta, a exposição não é necessariamente aberta, apenas o ponto final de exposição padrão info
ehealth
(3) Inicie o projeto para visualizar os endpoints expostos:
#默认是关闭的,可以手动开启
management.endpoint.shutdown.enabled=true
#如果不想全部开启,也可以关闭默认配置,手动开启自己需要的
#management.endpoints.enabled-by-default=false
Isso equivale a que todos os meus endpoints sejam ativados: você pode ver e expor dois endpoints health
einfo
Ver saúde:
Ver informações:
Você mesmo pode configurar a exposição do endpoint: você pode ver que o padrão é apenas saúde e informações
#配置端点暴露,* 表示暴露所有端点
management.endpoints.web.exposure.include=*
Como você pode ver, todos os endpoints estão expostos neste momento:
Neste momento, tente fazer uma solicitação POST e executar uma operação de desligamento:
porque não é seguro acessar o endpoint diretamente, você precisa adicionar uma segurança para proteger o endpoint
Três, introduza a segurança da mola para proteger os terminais
(1) Adicionar dependência de segurança
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
(2) Configurar Segurança
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.requestMatcher(EndpointRequest.toAnyEndpoint())
.authorizeRequests()
.anyRequest().hasRole("ADMIN")
.and()
.httpBasic();
}
}
application.properties
#配置 security
spring.security.user.name=yolo
spring.security.user.password=123
spring.security.user.roles=ADMIN
(3) Inicie o projeto e acesse o teste. Se
o acesso direto for encontrado, ele reportará 401, e você precisa verificar o login antes de acessar:
Acesso com sucesso:
(4) Configuração de caminho
Visitas anteriores, não actuator
, por exemplo, as visitas health
foram diretas:http://localhost:8080/health
, Começando com SpringBoot2, há mais um no meio actuator
.
Claro, se você visitar, você não quer o do meio actuator
( isso geralmente não é recomendado):
#代替掉 actuator
management.endpoints.web.base-path=/yolo
#也可以自定义端点的名称
management.endpoints.web.path-mapping.health=yolo-health
Acesso com sucesso:
(5) Suporte a vários domínios
#指定允许的域
management.endpoints.web.cors.allowed-origins=http://localhost:8081
#指定允许的方法
management.endpoints.web.cors.allowed-methods=GET,POST