Keselamatan Spring dan Pengesahan JWT · Pelajaran

Pengendalian Peristiwa Pengesahan Tersuai

Cipta pendengar tersuai untuk peristiwa kejayaan dan kegagalan pengesahan bagi melaksanakan pengelogan, pengauditan atau tindakan lain.

Pelajaran 3 daripada 411 langkah

Pengendalian Peristiwa Pengesahan Tersuai ialah pelajaran Keselamatan Spring dan Pengesahan JWT percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Keselamatan Spring dan Pengesahan JWT, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Keselamatan Spring dan Pengesahan JWT merangkumi sejumlah 4 pelajaran.

Pengenalan kepada Peristiwa Pengesahan

Selamat datang ke Pengendalian Peristiwa Pengesahan Tersuai! Dalam Spring Security, banyak tindakan penting, seperti pengguna log masuk atau gagal log masuk, akan mencetuskan peristiwa.

Peristiwa ini ibarat isyarat yang boleh “didengari” oleh aplikasi anda. Dengan mendengarnya, anda boleh bertindak balas terhadap kejadian berkaitan keselamatan ini.

  • Pembalakan: Merekod siapa yang log masuk dan bila.
  • Pengauditan: Menjejak tindakan sensitif dari segi keselamatan.
  • Logik Tersuai: Melaksanakan tindakan khusus apabila berjaya atau gagal (contohnya, mengunci akaun selepas terlalu banyak percubaan yang gagal).

Sistem Peristiwa Spring

Spring Framework mempunyai model penerbitan dan langganan peristiwa yang berkuasa. Spring Security memanfaatkannya untuk menerbitkan pelbagai peristiwa berkaitan pengesahan.

Anda boleh mencipta komponen tersuai yang “mendengar” peristiwa ini dan melaksanakan logik setiap kali peristiwa tersebut berlaku. Ini memastikan logik keselamatan anda kekal berasingan dan kemas.

Peristiwa Pengesahan Utama

Dua peristiwa pengesahan yang paling biasa dan berguna yang akan anda temui ialah:

  • AuthenticationSuccessEvent: Dicetuskan apabila pengguna berjaya membuat pengesahan. Peristiwa ini sesuai untuk merekod log masuk yang berjaya atau mengemas kini masa log masuk terakhir.
  • AbstractAuthenticationFailureEvent: Ini ialah kelas asas untuk semua peristiwa kegagalan pengesahan. Jenis kegagalan khusus (contohnya, kelayakan yang salah atau akaun yang dinyahdayakan) melanjutkan kelas ini. Anda boleh mendengar kelas asas untuk menangkap semua kegagalan atau subkelas tertentu.

Mencipta Pendengar Tersuai

Untuk mencipta pendengar, anda biasanya menggunakan anotasi @EventListener pada suatu kaedah dalam komponen Spring. Spring mengesan kaedah ini secara automatik dan mendaftarkannya sebagai pendengar peristiwa.

Jenis parameter kaedah menentukan peristiwa yang akan didengarinya. Contohnya, kaedah dengan parameter AuthenticationSuccessEvent hanya akan dipanggil apabila peristiwa khusus itu berlaku.

Kod: Persediaan Pendengar Kejayaan

Mari kita sediakan aplikasi Spring Boot ringkas dengan pengesahan dalam memori. Ini membolehkan kita mencetuskan peristiwa pengesahan dan melihat pendengar kita berfungsi.

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.provisioning.InMemoryUserDetailsManager;
import org.springframework.security.web.SecurityFilterChain;

@SpringBootApplication
@EnableWebSecurity
public class EventHandlingApp {

    public static void main(String[] args) {
        SpringApplication.run(EventHandlingApp.class, args);
    }

    @Bean
    public UserDetailsService userDetailsService() {
        UserDetails user = User.withDefaultPasswordEncoder()
            .username("user")
            .password("password")
            .roles("USER")
            .build();
        return new InMemoryUserDetailsManager(user);
    }

    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http
            .authorizeHttpRequests(auth -> auth
                .anyRequest().authenticated()
            )
            .formLogin();
        return http.build();
    }
}

Kod: Melaksanakan Pendengar Kejayaan

Sekarang, mari kita cipta pendengar tersuai untuk pengesahan yang berjaya. Kita hanya akan merekod mesej apabila pengguna berjaya log masuk.

Simpan ini sebagai fail Java baharu (contohnya, AuthenticationSuccessListener.java) dalam pakej yang sama dengan EventHandlingApp. Kemudian, jalankan EventHandlingApp dan cuba log masuk melalui pelayar (contohnya, localhost:8080 dengan user/password).

import org.springframework.context.event.EventListener;
import org.springframework.security.authentication.event.AuthenticationSuccessEvent;
import org.springframework.stereotype.Component;

@Component
public class AuthenticationSuccessListener {

    @EventListener
    public void handleAuthenticationSuccess(AuthenticationSuccessEvent event) {
        String username = event.getAuthentication().getName();
        System.out.println("SUCCESS: User '" + username + "' logged in successfully!");
        // You could also log full details, update a database, etc.
    }
}

Mengendalikan Kegagalan Pengesahan

Sama pentingnya dengan log masuk yang berjaya ialah percubaan yang gagal. Spring Security menyediakan AbstractAuthenticationFailureEvent dan subkelasnya untuk mengendalikan senario ini.

Dengan mendengar acara ini, anda boleh:

  • Merekod percubaan yang gagal untuk tujuan audit keselamatan.
  • Melaksanakan perlindungan terhadap serangan kekerasan (contohnya, mengunci akaun selepas N kegagalan).
  • Mencetuskan amaran untuk aktiviti yang mencurigakan.

Kod: Melaksanakan Pendengar Kegagalan

Mari tambahkan pendengar untuk kegagalan pengesahan. Pendengar ini akan menangkap apa-apa jenis kegagalan serta merekod nama pengguna dan sebab kegagalan tersebut.

Tambahkan ini sebagai satu lagi @Component atau sebagai kaedah dalam AuthenticationSuccessListener sedia ada. Cuba log masuk dengan kelayakan yang salah untuk melihatnya berfungsi.

import org.springframework.context.event.EventListener;
import org.springframework.security.authentication.event.AbstractAuthenticationFailureEvent;
import org.springframework.stereotype.Component;

@Component
public class AuthenticationFailureListener {

    @EventListener
    public void handleAuthenticationFailure(AbstractAuthenticationFailureEvent event) {
        String username = event.getAuthentication().getName();
        String failureReason = event.getException().getMessage();
        System.err.println("FAILURE: User '" + username + "' failed to log in. Reason: " + failureReason);
        // You can check event.getException() for specific failure types
    }
}

Membezakan Jenis Kegagalan

AbstractAuthenticationFailureEvent ialah kelas induk. Untuk kawalan yang lebih terperinci, anda boleh mendengar subkelas tertentu:

  • BadCredentialsEvent: Nama pengguna atau kata laluan salah.
  • DisabledExceptionEvent: Akaun pengguna dilumpuhkan.
  • LockedExceptionEvent: Akaun pengguna dikunci.
  • AccountExpiredExceptionEvent: Akaun pengguna telah tamat tempoh.

Anda boleh mencipta kaedah @EventListener berasingan untuk setiap satunya atau menggunakan pemeriksaan instanceof dalam satu pendengar.

Semakan Pengendalian Acara Tersuai

Anda telah mempelajari cara mencipta pendengar untuk acara pengesahan Spring Security. Mari semak pemahaman anda.

Imbas Kembali: Pengendalian Acara

Kami telah membincangkan cara Spring Security memanfaatkan sistem acara Spring untuk menerbitkan acara berkaitan pengesahan. Anda telah mempelajari cara untuk:

  • Memahami tujuan acara pengesahan untuk perekodan dan pengauditan.
  • Menggunakan anotasi @EventListener untuk mencipta pendengar tersuai.
  • Mengendalikan AuthenticationSuccessEvent untuk log masuk yang berjaya.
  • Mengendalikan AbstractAuthenticationFailureEvent untuk pelbagai kegagalan log masuk.

Dengan menggunakan acara ini, anda memperoleh kawalan dan keterlihatan yang kukuh terhadap proses pengesahan aplikasi anda.

Percuma untuk bermula

Pelajari Java dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
12
Pelajaran
48

Soalan Lazim

Adakah pelajaran “Pengendalian Peristiwa Pengesahan Tersuai” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Keselamatan Spring dan Pengesahan JWT, termasuk “Pengendalian Peristiwa Pengesahan Tersuai”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Keselamatan Spring dan Pengesahan JWT merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Pengendalian Peristiwa Pengesahan Tersuai”?

Cipta pendengar tersuai untuk peristiwa kejayaan dan kegagalan pengesahan bagi melaksanakan pengelogan, pengauditan atau tindakan lain. Anda berlatih Keselamatan Spring dan Pengesahan JWT menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Keselamatan Spring dan Pengesahan JWT?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Keselamatan Spring dan Pengesahan JWT di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.

Berapa lamakah pelajaran “Pengendalian Peristiwa Pengesahan Tersuai” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Keselamatan Spring dan Pengesahan JWT ini?

Ya. Setiap pelajaran Keselamatan Spring dan Pengesahan JWT menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Melaksanakan Pengesahan Berbilang Faktor
  2. Mengehadkan Kadar Akses API
  3. Pengendalian Peristiwa Pengesahan Tersuai
  4. Penguncian Akaun dan Perlindungan Daripada Serangan Brute Force
← Kembali ke Keselamatan Spring dan Pengesahan JWT