Pengantar Taglib Keamanan Musim Semi

1. Ikhtisar

Dalam tutorial ini, kita akan melihat Spring Security Taglibs, yang menyediakan dukungan dasar untuk mengakses informasi keamanan dan menerapkan batasan keamanan di JSP.

2. Ketergantungan Maven

Pertama-tama, mari tambahkan dependensi spring-security-taglibs ke pom.xml kami :

 org.springframework.security spring-security-taglibs 5.2.2.RELEASE 

3. Mendeklarasikan Taglibs

Sekarang, sebelum kita dapat menggunakan tag, kita perlu mengimpor taglib di bagian atas file JSP kita:

Setelah menambahkan ini, kita akan dapat menentukan tag Spring Security dengan awalan sec .

4. Tag otorisasi

4.1. mengakses Ekspresi

Dalam aplikasi kami, kami mungkin memiliki informasi yang harus ditampilkan hanya untuk peran atau pengguna tertentu.

Jika demikian, kita dapat menggunakan tag otorisasi :

 Login   Logout 

Selanjutnya, kami dapat memeriksa apakah pengguna yang diautentikasi memiliki peran khusus:

 Manage Users 

Dan kami dapat menggunakan ekspresi Keamanan Musim Semi apa pun sebagai nilai kami untuk akses :

  • hasAnyRole ('ADMIN', 'USER') mengembalikan nilai true jika pengguna saat ini memiliki salah satu peran yang terdaftar
  • isAnonymous () mengembalikan nilai true jika kepala sekolah saat ini adalah pengguna anonim
  • isRememberMe () mengembalikan nilai true jika kepala sekolah saat ini adalah pengguna ingat-saya
  • isFullyAuthenticated () mengembalikan nilai true jika pengguna diautentikasi dan bukan anonim atau pengguna ingat-saya

4.2. url

Selain itu, kami dapat memeriksa pengguna yang berwenang untuk mengirim permintaan ke URL tertentu:

 Manage Users 

4.3. Debugging

Mungkin ada kasus di mana kami ingin kontrol lebih atas UI, misalnya dalam skenario pengujian. Alih-alih membuat Spring Security melewati rendering bagian yang tidak sah ini, kita dapat menyetel spring.security.disableUISecurity = true di, katakanlah, file application.properties kita .

Saat kami melakukan ini, tag otorisasi tidak akan menyembunyikan isinya. Sebaliknya, ini akan membungkus konten dengan tag sebagai gantinya. Kemudian, kita dapat menyesuaikan rendering sendiri dengan beberapa CSS.

Ingatlah bahwa menyembunyikan konten melalui CSS tidak aman! Pengguna cukup melihat sumber untuk melihat konten yang tidak sah.

5. Tag otentikasi

Di lain waktu, kami ingin menampilkan detail tentang pengguna yang login, seperti mengatakan sesuatu seperti "Selamat Datang Kembali, Carol!" di tempat.

Untuk ini, kami menggunakan tag otentikasi :

 Welcome Back,  

6. Tag csrfInput

Mudah-mudahan, kami mengaktifkan pertahanan CSRF Spring Security di aplikasi kami!

Jika ya, maka Spring Security sudah memasukkan input formulir tersembunyi CSRF di dalamnya tag untuk kami.

Tetapi jika kita ingin menggunakan sebagai gantinya, kami dapat secara manual menunjukkan di mana Spring Security harus menempatkan bidang input tersembunyi ini menggunakan csrfInput :

  Text Field:

Jika perlindungan CSRF tidak diaktifkan, tag ini tidak menghasilkan apa-apa.

7. Tag csrfMetaTags

Atau, jika kami ingin mengakses token CSRF di Javascript, kami mungkin ingin memasukkan token tersebut sebagai tag meta.

Kita dapat melakukan ini dengan tag csrfMetaTags :

  JavaScript with CSRF Protection   var csrfParameter = $("meta[name='_csrf_parameter']").attr("content"); var csrfHeader = $("meta[name='_csrf_header']").attr("content"); var csrfToken = $("meta[name='_csrf']").attr("content");    ...  

Sekali lagi, jika perlindungan CSRF tidak diaktifkan, tag ini tidak akan menghasilkan apa pun.

8. Kesimpulan

Dalam artikel singkat ini, kami berfokus pada beberapa kasus penggunaan taglib Keamanan Musim Semi yang umum.

Dan, seperti yang kita pelajari, mereka sangat berguna untuk menampilkan konten JSP yang autentikasi dan sadar otorisasi.

Semua contoh, seperti biasa, dapat ditemukan di Github.