Rumah > Java > javaTutorial > Bagaimana untuk Memperbaiki Isu Pengesahan Peranan Keselamatan Spring Apabila Pengguna Bukan Pentadbir Mengakses Sumber Keistimewaan?

Bagaimana untuk Memperbaiki Isu Pengesahan Peranan Keselamatan Spring Apabila Pengguna Bukan Pentadbir Mengakses Sumber Keistimewaan?

Patricia Arquette
Lepaskan: 2024-12-06 19:40:16
asal
347 orang telah melayarinya

How to Fix Spring Security Role Authentication Issues When Non-Admin Users Access Privileged Resources?

Membetulkan Pengesahan Peranan dalam Keselamatan Spring

Apabila menggunakan Spring Security, kawalan akses berasaskan peranan adalah penting untuk melindungi sumber. Dalam projek baru-baru ini, anda telah menghadapi isu di mana pengguna bukan pentadbir boleh mengakses sumber istimewa. Kami akan memeriksa punca masalah dan menyediakan penyelesaian untuk membetulkannya.

AuthenticationManagerBuilder yang dikonfigurasikan anda memanfaatkan mekanisme pengesahan berasaskan JDBC, menggunakan Sumber data untuk pengesahan pengguna dan pengambilan pihak berkuasa. Isu ini berpunca daripada pertanyaan pengesahan pengguna:

"select username, password, 1 from users where username=?"
Salin selepas log masuk

Dalam pertanyaan ini, "1" adalah tidak penting, manakala kunci utama untuk pengenalan pengguna diabaikan. Akibatnya, semua pengguna tersilap diberikan peranan yang sama, membolehkan pengguna bukan pentadbir memintas sekatan akses.

Untuk membetulkan masalah ini, pertanyaan pengesahan harus secara eksplisit mengambil maklumat peranan yang dikaitkan dengan pengguna:

select username, password, role 
from users where username=?
Salin selepas log masuk

Selain itu, untuk mengutamakan kawalan akses berasaskan peranan, konfigurasi keselamatan HTTP anda harus diubah suai sebagai berikut:

@Override
protected void configure(HttpSecurity http) throws Exception {
    http
        .csrf().disable()      
        .httpBasic()
            .and()
        .authorizeRequests()
            .antMatchers("/users/all").hasRole("admin")
            .anyRequest().authenticated()
            .and()
        .formLogin()
            .and()
        .exceptionHandling().accessDeniedPage("/403");
}
Salin selepas log masuk

Dalam konfigurasi ini, penjodoh anyRequest() menyemak pengesahan terlebih dahulu, diikuti oleh pemadanan khusus peranan untuk "/users/all." Ini memastikan pengguna bukan pentadbir dinafikan akses kepada sumber istimewa, menyelesaikan isu awal anda.

Dengan melaksanakan pengubahsuaian ini, kawalan akses berasaskan peranan Spring Security akan berfungsi dengan betul, menghalang akses tanpa kebenaran kepada sumber yang dilindungi.

Atas ialah kandungan terperinci Bagaimana untuk Memperbaiki Isu Pengesahan Peranan Keselamatan Spring Apabila Pengguna Bukan Pentadbir Mengakses Sumber Keistimewaan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan