Ini adalah demo penggunaan JWT (JSON Web Token) dengan Spring Security dan Spring Boot . Saya sepenuhnya menulis ulang versi pertama saya. Sekarang solusi ini didasarkan pada basis kode dari Proyek JHipster. Saya mencoba mengekstrak konfigurasi minimal dan kelas yang diperlukan untuk Otentikasi JWT dan melakukan beberapa perubahan.
Demo ini dibuat dengan Maven 3.6.x dan Java 11.
Jalankan saja aplikasi dengan plugin Spring Boot maven ( mvn spring-boot:run
). Aplikasi berjalan di http://localhost:8080.
Anda dapat menggunakan H2-Console untuk menjelajahi database di bawah http://localhost:8080/h2-console:
Ada tiga akun pengguna yang hadir untuk menunjukkan tingkat akses yang berbeda ke titik akhir di API dan pengecualian otorisasi yang berbeda:
Admin - admin:admin
User - user:password
Disabled - disabled:password (this user is deactivated)
Ada empat titik akhir yang masuk akal untuk demo:
/api/authenticate - authentication endpoint with unrestricted access
/api/user - returns detail information for an authenticated user (a valid JWT token must be present in the request header)
/api/persons - an example endpoint that is restricted to authorized users with the authority 'ROLE_USER' (a valid JWT token must be present in the request header)
/api/hiddenmessage - an example endpoint that is restricted to authorized users with the authority 'ROLE_ADMIN' (a valid JWT token must be present in the request header)
Saya telah menulis klien Javascript kecil dan memberikan beberapa komentar pada kode yang semoga membuat demo ini dapat dimengerti. Anda dapat menemukannya di /src/main/resources/static/js/client.js.
Saya menggunakan bcrypt untuk menyandikan kata sandi. Anda dapat menghasilkan hash dengan alat sederhana ini: Bcrypt Generator
Sebenarnya demo ini menggunakan database H2 tertanam yang dikonfigurasi secara otomatis oleh Spring Boot. Jika Anda ingin terhubung ke database lain, Anda harus menentukan koneksi di application.yml di direktori sumber daya. Berikut ini contoh DB MySQL:
spring:
jpa:
hibernate:
# possible values: validate | update | create | create-drop
ddl-auto: create-drop
datasource:
url: jdbc:mysql://localhost/myDatabase
username: myUser
password: myPassword
driver-class-name: com.mysql.jdbc.Driver
Petunjuk: Untuk database lain seperti rangkaian MySQL tidak berfungsi untuk pembuatan ID. Jadi, Anda harus mengubah GenerationType di kacang entitas menjadi 'AUTO' atau 'IDENTITY'.
Anda dapat menemukan referensi semua properti aplikasi di sini.
#81
Proyek ini memiliki gambar buruh pelabuhan. Anda dapat menemukannya di https://hub.docker.com/r/hubae/jwt-spring-security-demo/.
Jika Anda memiliki pertanyaan terkait proyek, silakan lihat pertanyaan sebelumnya atau buat tiket baru dengan pertanyaan Anda.
Jika Anda memiliki pertanyaan yang tidak terkait langsung dengan proyek ini (misalnya pertanyaan umum tentang Spring Framework atau Spring Security, dll.) silakan cari di web atau lihat di Stackoverflow.
Maaf untuk itu tetapi saya sangat sibuk saat ini dan tidak punya banyak waktu.
Stephan Zerhusen
Kode ini dirilis di bawah lisensi MIT.
Jangan ragu untuk mengirimkan saya masukan atau pertanyaan!