การรับรองความถูกต้องและการอนุญาตตามบทบาทของ Spring Security ด้วย Spring Boot 3.0

May 08 2023
สวัสดีผู้เรียน ต่อไปนี้เราจะมาเรียนรู้เกี่ยวกับการปรับใช้ความปลอดภัยของสปริงด้วยสปริงบูต Spring security ให้การพิสูจน์ตัวตน การอนุญาต และการป้องกันการโจมตีทั่วไป

สวัสดีผู้เรียน ต่อไปนี้เราจะมาเรียนรู้เกี่ยวกับการปรับใช้ความปลอดภัยของสปริงด้วยสปริงบูต Spring security ให้การพิสูจน์ตัวตน การอนุญาต และการป้องกันการโจมตีทั่วไป

การยืนยันตัวตน -การยืนยันตัวตนคือวิธีที่เรายืนยันตัวตนของผู้ใช้ที่พยายามเข้าถึงทรัพยากรเฉพาะ เมื่อดำเนินการรับรองความถูกต้องแล้ว เราจะรู้ตัวตนและสามารถดำเนินการอนุญาตได้

การอนุญาต -การอนุญาตหมายถึงการอนุญาตให้เข้าถึงทรัพยากร/url เฉพาะ

ขั้นตอนในการใช้ Spring Security

ขั้นตอนที่ 1: เพิ่มการพึ่งพา Spring Security ใน POM.XML

ขั้นตอนที่ 2: สร้างคลาสการกำหนดค่า เพิ่มวิธีการตรวจสอบสิทธิ์และการอนุญาต

@EnableWebSecurity ให้การกำหนดค่าความปลอดภัยเริ่มต้นแก่แอปพลิเคชันของเรา การรักษาความปลอดภัยเริ่มต้นเปิดใช้งานทั้งตัวกรองความปลอดภัย HTTP และเชนตัวกรองความปลอดภัยและใช้การรับรองความถูกต้องพื้นฐานกับจุดสิ้นสุดของเรา

@Configuration บอกให้ Spring Boot สแกนคลาสเพื่อหาคำจำกัดความของ bean และลงทะเบียนด้วยบริบทของแอปพลิเคชัน

ใช้เมธอด authenticateProvider() เพื่อจัดเก็บรายละเอียดผู้ใช้ทั้งหมด เช่น ชื่อผู้ใช้ รหัสผ่าน บทบาท Spring Security ประกอบด้วยคลาส DaoAuthenticationProvider ซึ่งมี userDetailsService และ passwordEncoder.passwordEncoder() ใช้เพื่อเข้ารหัสรหัสผ่านและรหัสผ่านที่เข้ารหัสจะถูกจัดเก็บไว้ในฐานข้อมูล

SecutityFilterChain() วิธีการอนุญาตทรัพยากรที่นี่

.requestMatchers("/products/welcome","/products/new").permitAll() คือการให้สิทธิ์เข้าถึงแก่ผู้ใช้ทั้งหมด ผู้ใช้รายใดก็ตามสามารถเข้าถึงสอง URL นั้นได้

requestMatchers(“/products/**”).authenticated() คือการให้สิทธิ์การเข้าถึงแก่ผู้ใช้ที่ผ่านการรับรองความถูกต้อง

ขั้นตอนที่ 3: ใช้การให้สิทธิ์ตามบทบาท

@PreAuthorizeคำอธิบายประกอบใช้เพื่อระบุนิพจน์ที่จะถูกประเมินก่อนที่เมธอดจะถูกดำเนินการ หากนิพจน์ประเมินเป็นจริง เมธอดจะถูกดำเนินการ มิฉะนั้น AccessDeniedException จะถูกส่งออกไป

เมธอดgetAllProducts()สามารถดำเนินการได้โดยผู้ใช้ที่มีROLE_USERบทบาท ในขณะที่ ผู้ใช้ที่มี บทบาทgetProductById()สามารถดำเนินการเมธอดได้ROLE_ADMIN

การทดสอบการใช้งาน

เพิ่มโค้ดตัวอย่างเพื่อทดสอบการใช้งาน

หลังจากให้ข้อมูลรับรองผู้ใช้แล้ว ผู้ใช้จะสามารถเข้าถึงจุดสิ้นสุดของผู้ใช้ได้

เมื่อผู้ใช้พยายามเข้าถึงตำแหน่งข้อมูลผู้ดูแลระบบด้วยข้อมูลรับรองผู้ใช้ หน้าแสดงข้อผิดพลาดจะปรากฏขึ้น

หมายเหตุ: หากคุณต้องการโค้ด GitHub ที่ใช้งานได้ โปรดติดตามฉันและแสดงความคิดเห็น ID อีเมลของคุณ ฉันจะส่งลิงค์ซอร์สโค้ดไปยังอีเมลของคุณ

ส่วนที่ 2: การรับรองความถูกต้องของ Spring Security และการอนุญาตด้วย JWT

อ้างอิงลิงก์สำหรับ Spring Boot Concepts อื่นๆ:

บทช่วยสอน Spring AOP

บทช่วยสอนการบันทึก Spring Boot

การกำหนดค่าจากส่วนกลางใน Spring Boot

คำอธิบายประกอบไฮเบอร์เนตที่ใช้บ่อยที่สุด

รูปแบบการออกแบบไมโครเซอร์วิสที่สำคัญสำหรับการสัมภาษณ์