Kiedy wdrażam moją aplikację Spring za pomocą Spring Boot i localhost:8080
mam do niej dostęp, muszę się uwierzytelnić, ale jaka jest nazwa użytkownika i hasło lub jak mogę je ustawić? Próbowałem dodać to do mojego tomcat-users
pliku, ale nie zadziałało:
<role rolename="manager-gui"/>
<user username="admin" password="admin" roles="manager-gui"/>
To jest punkt wyjścia wniosku:
@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);
}
}
A to jest zależność Tomcat:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
Jak mogę się uwierzytelnić localhost:8080
?
java
spring
spring-mvc
tomcat
spring-boot
Gustavo
źródło
źródło
Odpowiedzi:
Myślę, że masz Spring Security na swojej ścieżce klasowej, a następnie Spring Security jest automatycznie konfigurowany z domyślnym użytkownikiem i wygenerowanym hasłem
Sprawdź w pliku pom.xml:
Jeśli masz to w swoim pom, powinieneś mieć komunikat konsoli dziennika podobny do tego:
Using default security password: ce6c3d39-8f20-4a41-8e01-803166bb99b6
W oknie przeglądarki zaimportujesz użytkownika
user
i hasło wydrukowane w konsoli.Lub jeśli chcesz skonfigurować zabezpieczenia wiosny, możesz zapoznać się z przykładem zabezpieczenia Spring Boot
Jest to wyjaśnione w dokumentacji Spring Boot Reference w sekcji Security i wskazuje:
źródło
org.springframework.boot.autoconfigure.security
kategoria jest ustawiona na rejestrowanie komunikatów INFO, w przeciwnym razie domyślne hasło nie zostanie wydrukowane.Jeśli
spring-security
pliki jar zostaną dodane w ścieżce klas, a także jeśli będzie tospring-boot
aplikacja, wszystkie punkty końcowe http będą zabezpieczone domyślną klasą konfiguracji zabezpieczeńSecurityAutoConfiguration
Powoduje to wyskakujące okienko przeglądarki z pytaniem o poświadczenia.
Hasło zmienia się przy każdym ponownym uruchomieniu aplikacji i można je znaleźć w konsoli.
Aby dodać własną warstwę zabezpieczeń aplikacji przed wartościami domyślnymi,
lub jeśli chcesz tylko zmienić hasło, możesz zastąpić domyślne,
application.xml
security.user.password = nowe_hasło
lub
application.properties
źródło
inMemoryAuthentication
you, wolisz prefiksować swoje hasło przed {noop}, gdy pojawi się błąd:There is no PasswordEncoder mapped for the id “null”
Podczas zastępowania
w application.properties , nie trzeba
"
dookoła"username"
, wystarczy użyćusername
. Kolejna kwestia, zamiast przechowywać surowe hasło , zaszyfruj je za pomocą bcrypt / scrypt i zapisz tak jakźródło
Jeśli nie możesz znaleźć hasła na podstawie innych odpowiedzi, które wskazują na hasło domyślne, treść komunikatu dziennika w ostatnich wersjach zmieniła się na
źródło
Możesz również poprosić użytkownika o poświadczenia i ustawić je dynamicznie po uruchomieniu serwera (bardzo skuteczne, gdy trzeba opublikować rozwiązanie w środowisku klienta):
(Maj 2018) Aktualizacja - to będzie działać na spring boot 2.x:
źródło
Dodatek do zaakceptowanej odpowiedzi -
Jeśli hasło nie jest widoczne w dziennikach, włącz dzienniki „org.springframework.boot.autoconfigure.security”.
https://docs.spring.io/spring-boot/docs/1.4.0.RELEASE/reference/htmlsingle/#boot-features-security
źródło
Kiedy zacząłem uczyć się Spring Security, zastąpiłem metodę userDetailsService (), jak w poniższym fragmencie kodu:
Możemy więc zalogować się do aplikacji za pomocą wyżej wymienionych danych. (np. admin / nimda)
Uwaga: tego nie powinniśmy używać w produkcji.
źródło
Spróbuj pobrać nazwę użytkownika i hasło z poniższego fragmentu kodu w swoim projekcie i zaloguj się i miej nadzieję, że to zadziała.
źródło