บทความนี้แนะนำวิธีการรักษาความปลอดภัยในฤดูใบไม้ผลิเพื่อควบคุมการอนุญาตและแบ่งปันกับคุณดังนี้:
ใช้วิธีการอนุญาตเพื่อกำหนดค่าการอนุญาต
นิพจน์การควบคุมการควบคุมความปลอดภัยของฤดูใบไม้ผลิแต่ละครั้ง (ต่อไปนี้จะเรียกว่านิพจน์) จริง ๆ แล้วสอดคล้องกับวิธีการอนุญาตใน API ซึ่งเป็นวิธีการประมวลผลเมื่อกำหนดค่าการอนุญาต URL ที่ร้องขอ ตัวอย่างเช่น:
@OverrideProtected Void Configure (httpsecurity http) พ่นข้อยกเว้น {http.authorizeRequests () .AntMatchers (httpmethod.delete, "/user/* Com .AntMatchers ("/pay"). hasanyrole ("we_chat_pay", "Ali_pay") .AntMatchers ("/debug"). hasipaddress ("192.168.1.0/24");};ใช้นิพจน์การอนุญาตเพื่ออนุญาตคำขอสำหรับการอนุญาตหลายรายการ
ดังนั้นคุณต้องใช้นิพจน์สำหรับการประมวลผลการอนุญาตเมื่อใด ข้อกำหนดการอนุญาตของแอปพลิเคชันความปลอดภัยมักจะซับซ้อนและหลากหลาย ตัวอย่างเช่นคำขอดีบั๊กของโครงการคาดว่าผู้เข้าชมจะมีทั้งสิทธิ์ของผู้ดูแลระบบและต้องเข้าถึงผ่าน LAN ภายในของ บริษัท ภายใต้ข้อกำหนดดังกล่าววิธีการที่ได้รับจาก API ความปลอดภัยไม่สามารถทำได้เพียงเพราะวิธีการอนุญาตเหล่านี้ไม่สามารถเรียกได้อย่างต่อเนื่อง
คุณสามารถใช้นิพจน์การอนุญาตเพื่อแก้ปัญหานี้:
@OverrideProtected Void Configure (httpsecurity http) โยนข้อยกเว้น {http.authorizeRequests () .AntMatchers ("/debug") .Access ("hasrole ('admin') และ hasipaddress ('192.168.1.0/24')")ตัวอย่างการแสดงออกการอนุญาต
| การแสดงออก | อธิบาย |
|---|---|
| อนุญาตให้ใช้ | กลับมาจริงตลอดไป |
| ปฏิเสธ | กลับมาเป็นเท็จตลอดไป |
| ไม่เปิดเผย | หากผู้ใช้ปัจจุบันเป็นผู้ใช้ที่ไม่ระบุชื่อให้ส่งคืนจริง |
| จำได้ | หากผู้ใช้ปัจจุบันจำได้ว่าให้ส่งคืนจริง |
| ที่รับรองแล้ว | หากผู้ใช้ปัจจุบันไม่ใช่ผู้ใช้ที่ไม่ระบุชื่อ (รับรองความถูกต้อง) ให้ส่งคืนจริง |
| เต็มไป | ส่งคืนจริงหากผู้ใช้ปัจจุบันไม่ใช่ผู้ใช้ที่ไม่ระบุชื่อหรือจำได้ว่าผู้ใช้ |
| Hasrole (บทบาท) | หากคุณมีสิทธิ์บทบาทบทบาทที่ระบุในการรวบรวมสิทธิ์ผู้ใช้ปัจจุบัน (เมื่อจับคู่ 'ROLE_' จะถูกเพิ่มก่อนที่คุณจะระบุสิทธิ์ที่คุณระบุนั่นคือถ้าคุณพิจารณาว่ามีการอนุญาต "ROLE_ROLE") ให้ส่งคืนจริง |
| Hasanyrole (Role1, Role2, ... ) | ส่งคืนจริงหากคุณมีสิทธิ์ในบทบาทใด ๆ ในการรวบรวมสิทธิ์ผู้ใช้ปัจจุบัน |
| Hasauthority (ผู้มีอำนาจ) | ส่งคืนจริงหากสิทธิ์ของผู้ใช้ปัจจุบันมีสิทธิ์ (ตรงกับการอนุญาต "อำนาจ") ในคอลเลกชันการอนุญาตผู้ใช้ปัจจุบันหรือไม่ |
| Hasanyauthority (ผู้มีอำนาจ) | ส่งคืนจริงหากคุณมีสิทธิ์ใด ๆ ในการรวบรวมสิทธิ์ผู้ใช้ปัจจุบัน |
| Hasipaddress ("192.168.1.0/24") | fanhui จริงเมื่อส่งการจับคู่ IP ที่ร้องขอ |
การควบคุมการเข้าถึงตามบทบาท RBAC (การควบคุมการเข้าถึงตามบทบาท)
บางทีคุณอาจคิดว่าวิธีการข้างต้นสามารถตอบสนองการจัดการความปลอดภัยของแอปพลิเคชันส่วนใหญ่ อย่างไรก็ตามในความเป็นจริงการอนุญาตของแอปพลิเคชันระดับองค์กรมักจะขึ้นอยู่กับการเปลี่ยนแปลงแบบไดนามิกในข้อมูลฐานข้อมูล หากใช้การประกบสตริงด้านบนมันจะไม่เพียง แต่ไม่เป็นมิตรกับนักพัฒนา (ทุกการเปลี่ยนแปลงในบุคลากรหมายความว่ารหัสจะต้องเปลี่ยนซึ่งเห็นได้ชัดว่าไม่มีเหตุผล) แต่ประสิทธิภาพของแอปพลิเคชันจะลดลงเช่นกัน แล้วจะแก้ปัญหาได้อย่างไร?
รูปแบบข้อมูล
แบบจำลองข้อมูล RBAC ทั่วไปโดยทั่วไปต้องการห้าตาราง (สามเอนทิตีโต๊ะและสองตารางความสัมพันธ์) ตารางเอนทิตีทั้งสามประกอบด้วยตารางผู้ใช้ตารางบทบาทและตารางทรัพยากร สองตารางความสัมพันธ์รวมถึง ความสัมพันธ์ระหว่างพวกเขามีดังนี้:
รูปแบบข้อมูล RBAC
ตารางผู้ใช้
ผู้ใช้ใด ๆ จะต้องมีตารางผู้ใช้ เมื่อ บริษัท เปลี่ยนแปลงบุคลากรบุคลากรธุรกิจ (เช่นทรัพยากรมนุษย์) จะเพิ่มและลบตารางข้อมูล
รายการบทบาท
บริษัท มีเอกลักษณ์อะไรเช่นประธานรองประธานผู้จัดการแผนก ฯลฯ และมีบุคลากรธุรกิจที่ดำเนินงานข้อมูลบนตารางตามสถานการณ์เฉพาะของ บริษัท
รายการทรัพยากร
จัดเก็บทรัพยากรที่ต้องการการควบคุมการอนุญาต เนื่องจากเราใช้ URL จริง ๆ เมื่อเราใช้การอนุญาตการควบคุมบุคลากรธุรกิจจึงไม่ได้จัดระเบียบรายการข้อมูลตาม URL แต่แทนที่จะทำงานในรูปแบบของอินเทอร์เฟซมุมมอง ดังนั้นในตารางนี้เมนูและปุ่มที่นำเสนอต่อบุคลากรธุรกิจและ URL ที่ควบคุมโดยสิทธิ์
ตารางความสัมพันธ์ระหว่างบทบาทผู้ใช้
มีความสัมพันธ์แบบหลายต่อหลายครั้งระหว่างตารางผู้ใช้และตารางบทบาท (ID ผู้ใช้และ ID บทบาท) ผู้ใช้สามารถมีหลายบทบาท (ผู้ใช้สามารถเป็นทั้งผู้จัดการแผนกและผู้ดูแลระบบ) ในขณะที่บทบาทมักจะสอดคล้องกับผู้ใช้หลายคน
ตารางความสัมพันธ์ตามบทบาททรัพยากร
ตารางบทบาทและตารางทรัพยากร () ยังมีความสัมพันธ์หลายต่อหลายคน บทบาทสามารถเข้าถึงทรัพยากรหลายอย่าง (ปุ่มหรือเมนู ฯลฯ ) และทรัพยากรสามารถเข้าถึงได้ด้วยหลายบทบาท
ความปลอดภัยในฤดูใบไม้ผลิยังรองรับการแสดงออกที่กำหนดเองเพื่อทำงานเช่นนี้
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น