Rumah >Java >javaTutorial >Bagaimanakah proses pengesahan dan kebenaran Spring Security berfungsi?

Bagaimanakah proses pengesahan dan kebenaran Spring Security berfungsi?

WBOY
WBOYasal
2024-04-17 16:33:01652semak imbas

Spring Security menyediakan mekanisme pengesahan dan kebenaran, termasuk: Pengesahan: Semak kesahihan bukti kelayakan pengguna menggunakan penyedia pengesahan, seperti menggunakan nama pengguna dan kata laluan atau pengesahan LDAP. Keizinan: Gunakan pengurus keputusan akses untuk membandingkan kebenaran pengguna dan URL yang diminta untuk menentukan sama ada untuk memberikan akses berdasarkan keputusan akses, seperti AffirmativeBased (mana-mana peranan yang sepadan membenarkan akses) atau ConsensusBased (semua peranan yang sepadan membenarkan akses). Kes praktikal: RBAC (kawalan akses berasaskan peranan): Gunakan UserDetailsService untuk menentukan peranan, gunakan RoleHierarchyVoter untuk mewujudkan hierarki peranan dan gunakan AffirmativeBased untuk mengakses pengurus keputusan untuk mendapatkan kebenaran. Proses pengesahan dan kebenaran untuk Spring Security pengesahan)

UserDetailsService (sahkan pengguna menggunakan logik tersuai ) Spring Security 的身份验证和授权流程是如何工作的?

LDAPAuthenticationProvider (sahkan melalui LDAP)

Pelanggan menghantar permintaan pengesahan ke pelayan pengesahan, yang mengandungi nama pengguna dan kata laluan.

Pelayan pengesahan menyerahkan bukti kelayakan kepada pembekal pengesahan yang berkaitan.

Pembekal pengesahan menyemak kesahihan bukti kelayakan dan mengembalikan objek UserDetails yang disahkan.

  • pengacau -selepas pengesahan yang berjaya, keselamatan musim bunga memberi kuasa melalui Pengurus Keputusan Akses, yang termasuk:
  • AccessDecisionManager (menentukan sama ada untuk memberikan akses)
  • AffirmativeBased (apa -apa pemadanan peranan membolehkan akses) Peranan mesti sepadan untuk membolehkan akses)
  1. Proses kebenaran:
  2. Pelayan pengesahan mendapatkan semula kebenaran dalam objek UserDetails.
  3. Pengurus Keputusan Akses membandingkan kebenaran pengguna dengan URL yang diminta.

Tentukan sama ada untuk memberikan akses berdasarkan keputusan akses.

Kes Praktikal: Kawalan Akses Berasaskan Peranan

  • Dalam senario kawalan akses berasaskan peranan (RBAC), anda boleh melakukan langkah berikut untuk menggunakan Spring Security untuk kebenaran:
  • Tentukan UserDetailsService yang digunakan dalamPerkhidmatan Returns UserDetails yang diberikan dengan peranan yang sesuai selepas nama pengguna.
  • Konfigurasikan RoleHierarchyVoter untuk mewujudkan hierarki peranan.

Konfigurasikan pengurus keputusan akses AffirmativeBased.

  1. Konfigurasi
  2. @Configuration
    public class SecurityConfig extends WebSecurityConfigurerAdapter {
    
        @Override
        protected void configure(AuthenticationManagerBuilder auth) {
            auth.userDetailsService(userDetailsService());
        }
    
        @Override
        protected void configure(HttpSecurity http) {
            http.authorizeRequests()
                    .antMatchers("/admin/**").hasRole("ROLE_ADMIN")
                    .antMatchers("/user/**").hasRole("ROLE_USER")
                    .anyRequest().permitAll();
        }
    
    }
  3. UserDetailsService

@Service
public class UserDetailsServiceImpl implements UserDetailsService {

    @Override
    public UserDetails loadUserByUsername(String username) {
        User user = userRepository.findByUsername(username);
        return new UserDetailsAdapter(user);
    }

}
UserDetailsAdapter

public class UserDetailsAdapter implements UserDetails {

    private final User user;

    public UserDetailsAdapter(User user) {
        this.user = user;
    }

    // ... UserDetails implementation methods ...

}

Atas ialah kandungan terperinci Bagaimanakah proses pengesahan dan kebenaran Spring Security berfungsi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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