Rumah > Java > javaTutorial > Mengapakah Keizinan Berasaskan Peranan Keselamatan Musim Bunga Saya Gagal?

Mengapakah Keizinan Berasaskan Peranan Keselamatan Musim Bunga Saya Gagal?

Barbara Streisand
Lepaskan: 2024-12-09 02:28:09
asal
945 orang telah melayarinya

Why Are My Spring Security Role-Based Authorizations Failing?

Membetulkan Keizinan Peranan dalam Keselamatan Musim Bunga

Keselamatan Musim Bunga menawarkan mekanisme kebenaran yang mantap, tetapi konfigurasi yang salah boleh membawa kepada kerentanan keselamatan. Artikel ini menangani isu biasa di mana pengguna yang mempunyai peranan terhad boleh mengakses sumber yang dikhaskan untuk pentadbir.

Coretan kod yang disediakan mengkonfigurasi Spring Security menggunakan kedua-dua pengesahan dalam memori dan pengesahan JDBC. Walaupun isu itu dikaitkan dengan nama pengguna pilih, kata laluan, 1 daripada pengguna where username=? pertanyaan, punca sebenar terletak di tempat lain.

Masalahnya berpunca daripada susunan pemadan dalam kaedah authorizeRequests(). Spring Security menilai pemadan mengikut urutan, dan padanan pertama menentukan keputusan kebenaran. Dalam kes ini, pemadanan berikut:

.anyRequest().authenticated()
Salin selepas log masuk

diletakkan sebelum pemadanan berasaskan peranan:

.antMatchers("/users/all").hasRole("admin")
Salin selepas log masuk

Akibatnya, semua permintaan dibenarkan selagi pengguna disahkan , tanpa mengira peranan mereka. Untuk menyelesaikan masalah ini, susun semula pemadan supaya pemadan berasaskan peranan diutamakan:

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

Dengan konfigurasi yang disemak ini, pengguna yang hanya mempunyai peranan "pengguna" akan dinafikan akses kepada "/users/all" manakala pengguna dengan peranan "pentadbir" akan mempunyai akses.

Adalah penting untuk mengingati susunan pemadan apabila mengkonfigurasi kebenaran Spring Security untuk memastikan bahawa yang dimaksudkan dasar keselamatan dikuatkuasakan.

Atas ialah kandungan terperinci Mengapakah Keizinan Berasaskan Peranan Keselamatan Musim Bunga Saya Gagal?. 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