Ich reformiere ein altes Java-Springprojekt in Springboot und stelle es in einen traditionellen Kriegsstil um. Aus irgendeinem Grund muss ich bei der traditionellen web.xml bleiben, um die Anwendung zu starten. Dank Springbook Legacy, kann ich dies mit einer web.xml erreichen:Springboot-Aktuator gibt 401 für Aktuator-Endpunkte zurück
Zusätzlich füge ich Springboot Aktuatorabhängigkeit hinzu. Die application.properties
ist wie folgt:
endpoints.enabled=true
endpoints.sensitive=true
management.security.enabled=true
management.context-path=/manage
security.user.password=myserver
security.user.name=myserver
Die Anwendung kann normal gestartet, aber wenn ich versuche Endpunkte von Browser zu besuchen es gibt nur einen 401 Full authentication is required to access this resource
Fehler ohne mich zu fragen in Benutzername und Kennwort einzugeben. Verwandte Protokolle sind unter:
16:00:04.264 DEBUG [resin-port-8081-19] org.springframework.web.servlet.DispatcherServlet: DispatcherServlet with name 'myservlet' processing GET request for [/manage/health]
16:00:04.264 DEBUG [resin-port-8081-19] org.springframework.boot.actuate.endpoint.mvc.EndpointHandlerMapping: Looking up handler method for path /manage/health
16:00:04.264 DEBUG [resin-port-8081-19] org.springframework.boot.actuate.endpoint.mvc.EndpointHandlerMapping: Returning handler method [public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.HealthMvcEndpoint.invoke(javax.servlet.http.HttpServletRequest,java.security.Principal)]
16:00:04.264 DEBUG [resin-port-8081-19] org.springframework.web.servlet.DispatcherServlet: Last-Modified value for [/manage/health] is: -1
16:00:04.264 DEBUG [resin-port-8081-19] org.springframework.core.env.PropertySourcesPropertyResolver: Found key 'endpoints.sensitive' in [applicationConfig: [classpath:../conf/application.properties]] with type [String]
16:00:04.265 DEBUG [resin-port-8081-19] org.springframework.web.servlet.DispatcherServlet: Successfully completed request
Was könnte der Grund für dieses Problem sein? Gibt es einen Unterschied zwischen einem von Springboot erstellten DispatherServlet und einem explizit in einer web.xml definierten? Aus Sicherheitsgründen ist eine Notwendigkeit.
Dank Paul, aber ich frage mich, gibt es einige tiefere Gründe für dieses Problem sind. Als Vergleich verwende ich einen Servlet 3.0-Stil, um dieses Projekt neu zu gestalten, dh schreibe eine Klasse, die von SpringbootServletInitializer ausgeht, die von einem Webcontainer, der Servlet 3.0 unterstützt, automatisch erkannt wird und diese Klasse benutzt, um die Anwendung zu konfigurieren und andere Arbeiten zu belassen getan durch Springboot, wie das Einspritzen eines DispatcherServlet. Auf diese Weise können die Endpunkte bei unveränderter Anwendung "application.properties" aufgerufen werden, nachdem die Authentifizierungsinformationen eingegeben wurden. Ich kann nicht sagen, warum es nicht funktioniert, wenn web.xml benutzt wird. – xiangyq000
Nicht sicher in diesem Punkt. Vielleicht einfach web.xml wie hier erklärt: http://www.baeldung.com/spring-xml-vs-java-config – PaulNUK