Ketika saya menggunakan aplikasi Spring saya melalui Spring Boot dan akses localhost:8080
saya harus mengotentikasi, tetapi apa nama pengguna dan kata sandi atau bagaimana cara mengaturnya? Saya mencoba menambahkan ini ke tomcat-users
file saya tetapi tidak berhasil:
<role rolename="manager-gui"/>
<user username="admin" password="admin" roles="manager-gui"/>
Ini adalah titik awal aplikasi:
@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);
}
}
Dan ini adalah ketergantungan Tomcat:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
Bagaimana cara saya mengotentikasi localhost:8080
?
java
spring
spring-mvc
tomcat
spring-boot
Gustavo
sumber
sumber
Jawaban:
Saya pikir Anda memiliki Spring Security di jalur kelas Anda dan kemudian spring security secara otomatis dikonfigurasi dengan pengguna default dan kata sandi yang dihasilkan
Silakan lihat file pom.xml Anda untuk:
Jika Anda memilikinya di pom Anda daripada Anda harus memiliki pesan konsol log seperti ini:
Using default security password: ce6c3d39-8f20-4a41-8e01-803166bb99b6
Dan di browser prompt Anda akan mengimpor pengguna
user
dan kata sandi yang tercetak di konsol.Atau jika Anda ingin mengkonfigurasi keamanan pegas Anda dapat melihat contoh aman Spring Boot
Dijelaskan dalam dokumentasi Referensi Boot Musim Semi di bagian Keamanan , ini menunjukkan:
sumber
org.springframework.boot.autoconfigure.security
kategori diatur untuk mencatat pesan INFO, jika tidak, kata sandi default tidak akan dicetak.Jika
spring-security
guci ditambahkan di classpath dan juga jika itu adalahspring-boot
aplikasi semua titik akhir http akan diamankan oleh kelas konfigurasi keamanan defaultSecurityAutoConfiguration
Ini menyebabkan browser pop-up untuk meminta kredensial.
Kata sandi berubah untuk setiap aplikasi yang dimulai ulang dan dapat ditemukan di konsol.
Untuk menambahkan lapisan keamanan aplikasi Anda sendiri di depan default,
atau jika Anda hanya ingin mengubah kata sandi, Anda dapat mengganti default dengan,
application.xml
security.user.password = new_password
atau
properti aplikasi
sumber
inMemoryAuthentication
Anda lebih awalan kata sandi Anda dengan {noop} ketika Anda menerima kesalahan:There is no PasswordEncoder mapped for the id “null”
Saat mengesampingkan
di application.properties , Anda tidak perlu
"
berkeliling"username"
, cukup gunakanusername
. Hal lain, alih-alih menyimpan kata sandi mentah , mengenkripsi dengan bcrypt / scrypt dan menyimpannya sepertisumber
Jika Anda tidak dapat menemukan kata sandi berdasarkan jawaban lain yang mengarah ke default, pesan log kata dalam versi terbaru diubah menjadi
sumber
Anda juga dapat meminta kredensial pengguna dan mengaturnya secara dinamis setelah server mulai (sangat efektif ketika Anda perlu mempublikasikan solusi pada lingkungan pelanggan):
(Mei 2018) Pembaruan - ini akan bekerja pada spring boot 2.x:
sumber
Selain jawaban yang diterima -
Jika kata sandi tidak terlihat di log, aktifkan log "org.springframework.boot.autoconfigure.security".
https://docs.spring.io/spring-boot/docs/1.4.0.RELEASE/reference/htmlsingle/#boot-features-security
sumber
Ketika saya mulai belajar Spring Security, maka saya menimpa metode userDetailsService () seperti dalam cuplikan kode di bawah ini:
Jadi kita bisa masuk ke aplikasi menggunakan kredit yang disebutkan di atas. (mis. admin / nimda)
Catatan: Ini sebaiknya tidak kita gunakan dalam produksi.
sumber
Cobalah untuk mengambil nama pengguna dan kata sandi dari snipet kode di bawah dalam proyek Anda dan login dan berharap ini akan berhasil.
sumber