Wie verwende ich grundlegende Sicherheit für Management-Endpunkte wie /env, /health, /metrics
?
Ich möchte unterschiedliche Benutzeranmeldeinformationen für die oben genannten Endpunkte verwenden, verglichen mit den anderen Endpunkten der Anwendungscontroller-Sicherheit.
In meiner Datei application.properties habe ich unten für die Sicherheit des Anwendungscontrollers angegeben
Aber ich möchte einen anderen Benutzernamen / Passwort für Management-Endpunkte. % Co_de% -Eigenschaft konnte nicht gefunden werden.
Spring security hat eine "globale" AuthenticationManager
konfiguriert in @Bean
Instanzen des Typs GlobalAuthenticationConfigurerAdapter
. Diese AuthenticationManager
wird von den security.user.*
-Eigenschaften konfiguriert, es sei denn, Sie haben security.basic.enabled=false
festgelegt. Das globale AM
wird standardmäßig auch an die Verwaltungsendpunkte angehängt. Es ist das übergeordnete Element eines "lokalen" AuthenticationManagers
, das in WebSecurityConfigurationAdapters
definiert ist (sie sind alle ProviderManagers
).
Wenn Sie also unterschiedliche Benutzerkonten für Verwaltungsendpunkte und Anwendungsendpunkte haben möchten, haben Sie (mindestens) zwei Möglichkeiten:
Definieren Sie eine lokale AM
für Ihre Anwendungsendpunkte in WebSecurityConfigurationAdapter
und stellen Sie sicher, dass die Verwaltungsendpunkte nicht von diesem Filter abgedeckt werden. Das ist einfach, denn es ist das, was du bekommst, ohne viel nachzudenken und einfach ein AuthenticationManagerBuilder
zu deinem WebSecurityConfigurationAdapter
hinzuzufügen (solange es sorgfältig in Bezug auf das Filter, der die Verwaltung Endpunkte sichert ).
Verwenden Sie die globale AM
(oder eine andere lokale) für Anwendungsendpunkte und konfigurieren Sie die Sicherheit für die Verwaltungsendpunkte neu (z. B. security.basic.enabled=false
festlegen und eigene WebSecurityConfigurerAdapter
für die Verwaltungsendpunkte hinzufügen). Dies könnte mehr Arbeit sein und dupliziert einige der Boot-Standardeinstellungen, aber zumindest weißt du, was du bekommst.
Um die grundlegende Sicherheit der Endpunkte zu implementieren, müssen Sie den folgenden Code verwenden
%Vor%und in der Konfigurationsdatei sollte wie folgt sein
%Vor%funktioniert immer noch nicht, dann hoffe, das wird funktionieren
Dave hat das bereits gut erklärt, aber hier ein komplettes Beispiel mit WebSecurityConfigurerAdapter und Datenbank als Auth-Quelle.
SecurityConfig.java
%Vor%Und das ist meine application.properties
application.properties
%Vor%Sie können weitere Eigenschaften von Endpunkten in Eigenschaften einer Federanwendung überprüfen
Beispiel für eine Verwaltungsanfrage
Es ist ADMIN Role Benutzer (Benutzername: admin, Passwort: Passwort) bereits in der Datenbank hinzugefügt.
Die Beispielmanagementanforderung zum Herunterfahren
%Vor%Die Beispielmanagementanforderung zum Überprüfen von HeapMemoryUsage und ThreadCount über jolokia
%Vor%Die Beispielmanagementanforderung zum Überprüfen des Status
%Vor%Tags und Links spring-boot