Wenn ich meine Spring-Anwendung über Spring Boot und Zugriff bereitstelle, muss localhost:8080
ich mich authentifizieren. Wie lautet jedoch der Benutzername und das Kennwort oder wie kann ich sie festlegen? Ich habe versucht, dies zu meiner tomcat-users
Datei hinzuzufügen, aber es hat nicht funktioniert:
<role rolename="manager-gui"/>
<user username="admin" password="admin" roles="manager-gui"/>
Dies ist der Ausgangspunkt der Anwendung:
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
}
Und das ist die Tomcat-Abhängigkeit:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
Wie authentifiziere ich mich bei localhost:8080
?
java
spring
spring-mvc
tomcat
spring-boot
Gustavo
quelle
quelle
Antworten:
Ich denke, Sie haben Spring Security in Ihrem Klassenpfad und dann wird Spring Security automatisch mit einem Standardbenutzer und einem generierten Passwort konfiguriert
Bitte schauen Sie in Ihre pom.xml-Datei nach:
Wenn Sie das in Ihrem POM haben, sollten Sie eine Protokollkonsolenmeldung wie die folgende haben:
Using default security password: ce6c3d39-8f20-4a41-8e01-803166bb99b6
In der Browser-Eingabeaufforderung importieren Sie den Benutzer
user
und das in der Konsole gedruckte Kennwort.Wenn Sie die Federsicherheit konfigurieren möchten, sehen Sie sich das Beispiel für den gesicherten Spring Boot an
Es wird in der Spring Boot Reference-Dokumentation im Abschnitt Sicherheit erläutert. Es gibt Folgendes an:
quelle
org.springframework.boot.autoconfigure.security
Kategorie so eingestellt ist, dass INFO-Nachrichten protokolliert werden. Andernfalls wird das Standardkennwort nicht gedruckt.Wenn
spring-security
Jars im Klassenpfad hinzugefügt werden und es sich auch um einespring-boot
Anwendung handelt, werden alle http-Endpunkte durch die Standard-Sicherheitskonfigurationsklasse gesichertSecurityAutoConfiguration
Dies führt dazu, dass ein Browser-Popup nach Anmeldeinformationen fragt.
Die Kennwortänderungen für jede Anwendung werden neu gestartet und befinden sich in der Konsole.
Um Ihre eigene Ebene der Anwendungssicherheit vor den Standardeinstellungen hinzuzufügen,
oder wenn Sie nur das Passwort ändern möchten, können Sie die Standardeinstellung überschreiben mit:
application.xml
security.user.password = neues_password
oder
application.properties
quelle
inMemoryAuthentication
Sie das verwenden, stellen Sie Ihrem Passwort lieber {noop} voran, wenn Sie die Fehlermeldung erhalten:There is no PasswordEncoder mapped for the id “null”
Beim Überschreiben
In application.properties müssen Sie nicht
"
herum"username"
, sondern nur verwendenusername
. Ein weiterer Punkt: Anstatt ein unformatiertes Passwort zu speichern , verschlüsseln Sie es mit bcrypt / scrypt und speichern Sie es wie folgtquelle
Wenn Sie das Kennwort nicht anhand anderer Antworten finden können, die auf ein Standardkennwort verweisen, wurde der Wortlaut der Protokollnachricht in den letzten Versionen in geändert
quelle
Sie können den Benutzer auch nach den Anmeldeinformationen fragen und diese dynamisch festlegen, sobald der Server gestartet wird (sehr effektiv, wenn Sie die Lösung in einer Kundenumgebung veröffentlichen müssen):
(Mai 2018) Ein Update - dies funktioniert auf Spring Boot 2.x:
quelle
Ergänzung zur akzeptierten Antwort -
Wenn das Kennwort in den Protokollen nicht angezeigt wird, aktivieren Sie die Protokolle "org.springframework.boot.autoconfigure.security".
https://docs.spring.io/spring-boot/docs/1.4.0.RELEASE/reference/htmlsingle/#boot-features-security
quelle
Als ich anfing, Spring Security zu lernen, habe ich die Methode userDetailsService () wie im folgenden Codeausschnitt überschrieben :
So können wir uns mit den oben genannten Creds bei der Anwendung anmelden. (zB admin / nimda)
Hinweis: Dies sollten wir nicht in der Produktion verwenden.
quelle
Versuchen Sie, Benutzernamen und Passwort aus dem folgenden Code-Snipet in Ihrem Projekt zu übernehmen und sich anzumelden, und hoffen Sie, dass dies funktioniert.
quelle