ธรรมชาติของความปลอดภัยในฤดูใบไม้ผลิ
การรักษาความปลอดภัยในสปริงเป็นชุดของตัวกรองซึ่งจะถูกแทรกลงในห่วงโซ่ตัวกรองเป็นตัวกรองแยกต่างหากที่เรียกว่า FilterChainproxy ดังที่แสดงในรูป
ในความเป็นจริงอาจมีห่วงโซ่ตัวกรองหลายตัวภายใต้ FilterChainproxy เพื่อตรวจสอบ URL ที่แตกต่างกันและตัวกรองที่เป็นเจ้าของในห่วงโซ่ตัวกรองจะเพิ่มหรือลดลงโดยอัตโนมัติตามบริการที่กำหนดไว้ ดังนั้นจึงไม่จำเป็นต้องแสดงและกำหนดตัวกรองเหล่านี้เว้นแต่คุณต้องการใช้ตรรกะของคุณเอง
หมวดหมู่คีย์
การรับรองความถูกต้อง
การรับรองความถูกต้องเป็นอินเทอร์เฟซที่ใช้เพื่อแสดงข้อมูลการตรวจสอบผู้ใช้ ก่อนที่ผู้ใช้จะเข้าสู่ระบบเพื่อตรวจสอบสิทธิ์ข้อมูลที่เกี่ยวข้องจะถูกห่อหุ้มไว้ในวัตถุของคลาสการใช้งานการตรวจสอบความถูกต้อง หลังจากการรับรองความถูกต้องเข้าสู่ระบบประสบความสำเร็จวัตถุการตรวจสอบความถูกต้องที่มีข้อมูลที่ครอบคลุมมากขึ้นรวมถึงการอนุญาตผู้ใช้และข้อมูลอื่น ๆ จะถูกสร้างขึ้นและบันทึกไว้ใน SecurityContext ที่จัดขึ้นโดย SecurityContextholder สำหรับโปรแกรมต่อมาที่จะโทรเช่นการตรวจสอบสิทธิ์การเข้าถึง
AuthenticationManager
อินเทอร์เฟซหลักที่ใช้สำหรับการตรวจสอบคือ AuthenticationManager ซึ่งมีเพียงวิธีเดียวเท่านั้น:
ส่วนต่อประสานสาธารณะ AuthenticationManager {การรับรองความถูกต้องการรับรองความถูกต้อง (การรับรองความถูกต้องของการรับรองความถูกต้อง) พ่น AuthenticationException;}อาจมีสามสถานการณ์หลังจากวิธีการตรวจสอบสิทธิ์ () ทำงาน:
การตรวจสอบจะประสบความสำเร็จและการรับรองความถูกต้องพร้อมข้อมูลผู้ใช้จะถูกส่งคืน
การตรวจสอบล้มเหลวและข้อยกเว้นการรับรองความถูกต้องถูกโยนลงไป
ไม่สามารถตัดสินได้กลับ Null
ผู้ให้บริการ
ProviderManager เป็นการดำเนินการที่พบบ่อยที่สุดของ AuthenticationManager ด้านบน มันไม่ได้จัดการกับการตรวจสอบด้วยตัวเอง แต่มอบหมายการตรวจสอบไปยังรายการ AuthenticationProvider ที่กำหนดค่าแล้วเรียกใช้ AuthenticationProvider แต่ละรายการเพื่อตรวจสอบความถูกต้อง ในกระบวนการนี้ตราบใดที่ AuthenticationProvider ได้รับการรับรองความถูกต้องแล้วจะไม่มีการตรวจสอบอีกต่อไป ผลการตรวจสอบสิทธิ์นี้จะถูกใช้โดยตรงเป็นผลการตรวจสอบของผู้ให้บริการ
กระบวนการรับรอง
ผู้ใช้เข้าสู่ระบบด้วยชื่อผู้ใช้และรหัสผ่าน
ความปลอดภัยของฤดูใบไม้ผลิห่อหุ้มชื่อผู้ใช้และรหัสผ่านที่ได้รับลงในคลาสการใช้งานการตรวจสอบความถูกต้องเช่น UserNamePasswordAticationToken ที่ใช้กันทั่วไป
ผ่านวัตถุการรับรองความถูกต้องที่สร้างขึ้นข้างต้นไปยังผู้ให้บริการ AuthenticationManager ProviderManager สำหรับการตรวจสอบความถูกต้อง
ProviderManager เรียกแต่ละ AuthenticationProvider เพื่อตรวจสอบสิทธิ์ หลังจากการรับรองความถูกต้องสำเร็จวัตถุการตรวจสอบสิทธิ์จะห่อหุ้มสิทธิ์การใช้งานของผู้ใช้และข้อมูลอื่น ๆ จะถูกส่งคืน
กำหนดวัตถุการรับรองความถูกต้องที่ส่งคืนโดย AuthenticationManager ให้กับ SecurityContext ปัจจุบัน
การตรวจสอบที่กำหนดเอง
ด้วยการสำรองความรู้ข้างต้นคุณสามารถปรับแต่งวิธีการตรวจสอบ จากข้างต้นเราจะเห็นได้ว่าในความเป็นจริงผู้ตรวจสอบความถูกต้องจะใช้จริง ๆ ในการดำเนินการตรวจสอบ ดังนั้นหากคุณต้องการปรับแต่งวิธีการตรวจสอบคุณจะต้องใช้ AuthenticationProvider ของคุณเองแล้วเพิ่มลงใน ProviderManager
ปรับแต่ง AuthenticationProvider
@ComponentPublic คลาส CustomauthenticationProvider ใช้การรับรองความถูกต้อง Provider {@Override การรับรองความถูกต้องของการรับรองความถูกต้องสาธารณะ (การรับรองความถูกต้องการรับรองความถูกต้อง) พ่น AuthenticationException {ชื่อสตริง = การรับรองความถูกต้อง getName (); สตริงรหัสผ่าน = การรับรองความถูกต้อง getCredentials (). toString (); if (ควรจะใช้งาน AEGAINSTTHIRDPARTYSYSTEM ()) {// ใช้ข้อมูลรับรอง // และรับรองความถูกต้องกับระบบของบุคคลที่สามส่งคืนผู้ใช้ใหม่ USERNAMEPASSWORDAUTHENTICATIONTOKEN (ชื่อรหัสผ่าน } else {return null; }} @Override บูลีนสาธารณะสนับสนุน (คลาส <?> การรับรองความถูกต้อง) {return uthentication.equals (USERNAMEPASSWORDAUTHENTICATIONTOKEN.CLASS); -วิธีการสนับสนุน () ยอมรับพารามิเตอร์การรับรองความถูกต้องเพื่อตรวจสอบว่าการตรวจสอบความถูกต้องที่ส่งผ่านเป็นประเภทที่ผู้ตรวจสอบความถูกต้องสามารถจัดการได้หรือไม่
ลงทะเบียน AuthenticationProvider
ตอนนี้ลงทะเบียน AuthenticationProvider ที่คุณเพิ่งสร้างใน ProviderManager และการดำเนินการทั้งหมดจะเสร็จสมบูรณ์
@configuration@enablewebsecurity@ComponentsCan ("org.baeldung.security") ระดับสาธารณะ SecurityConfig ขยาย websecurityConfigurerAdapter {@autowired Private CustomauthenticationProvider AuthProvider; @Override Void Proftection Configure (AuthenticationManagerBuilder Auth) พ่นข้อยกเว้น {auth.authenticationProvider (AuthProvider); } @Override Void Protected Configure (httpsecurity http) โยนข้อยกเว้น {http.authorizeRequests (). anyrequest (). การรับรองความถูกต้อง () .and () .httpbasic (); -สรุป
ข้างต้นคือการวิเคราะห์กระบวนการตรวจสอบความปลอดภัยของฤดูใบไม้ผลิและวิธีการตรวจสอบที่กำหนดเองที่แนะนำโดยบรรณาธิการ ฉันหวังว่ามันจะเป็นประโยชน์กับคุณ หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับคุณทันเวลา ขอบคุณมากสำหรับการสนับสนุนเว็บไซต์ Wulin.com!