تقدم هذه المقالة طريقة أمان الربيع للتحكم في التفويض ومشاركتها معك ، على النحو التالي:
استخدم طريقة التفويض لتكوين التفويض
كل تعبير تفويض التحكم في أمن الربيع (يشار إليه فيما يلي باسم تعبير) يتوافق فعليًا مع طريقة التفويض في API ، وهي طريقة المعالجة عند تكوين أذونات URL المطلوبة. على سبيل المثال:
OverRideProtected void تكوين (httpsecurity http) يلقي استثناء {http.authorizerequests () .antmatchers (httpmethod.delete ، "/user/*").hasrole("admin") .antmatchers ("/index" .antmatchers ("/pay"). hasanyrole ("we_chat_pay" ، "ali_pay") .antmatchers ("/debug"). Hasipaddress ("192.168.1.0/24") ؛}استخدم تعبيرات التفويض لتصريح طلبات الأذونات المتعددة
لذا ، متى تحتاج إلى استخدام تعبيرات لمعالجة التفويض؟ غالبًا ما تكون متطلبات إذن تطبيق الأمن معقدة ومتنوعة. على سبيل المثال ، يتوقع طلب تصحيح الأخطاء من المشروع أن يتمتع الزائر بحقوق المسؤول ويجب الوصول إليه من خلال الشبكة المحلية الداخلية للشركة. بموجب هذه المتطلبات ، لا يمكن استيفاء الطرق التي توفرها واجهة برمجة تطبيقات الأمان فقط لأنه لا يمكن استدعاء طرق التفويض هذه بشكل مستمر.
يمكنك استخدام تعبيرات التفويض لحل هذه المشكلة:
OverRideProtected void تكوين (httpsecurity http) يلقي استثناء {http.authorizerequests () .antmatchers ("/debug") .Access ("hasrole ('admin') و hasipaddress ('192.168.1.0/24')مثال التعبير التفويض
| تعبير | يوضح |
|---|---|
| المسمار | العودة إلى الأبد |
| ينكر | العودة كاذبة إلى الأبد |
| anonyous | إذا كان المستخدم الحالي مستخدمًا مجهول الهوية ، فاحرص على ذلك |
| تذكرنى | إذا كان المستخدم الحالي يتذكر ، فاحصل على True |
| مصادقة | إذا لم يكن المستخدم الحالي مستخدمًا مجهول الهوية (مصادق عليه) ، فاحرزوا صحيحًا |
| FIREAUATHINGETICATION | إرجاع صحيح إذا لم يكن المستخدم الحالي مجهول الهوية ولا يتذكر المستخدم |
| هاسول (دور) | إذا كان لديك أذونات الدور المحددة في مجموعة أذونات المستخدم الحالية (عند المطابقة ، فسيتم إضافة "ROLE_" قبل أذوناتك التي حددتها ، أي إذا حددت ما إذا كان هناك إذن "rob_role") ، فالتراجع. |
| Hasanyrole (دور 1 ، الدور 2 ، ...) | إرجاع صحيح إذا كان لديك أي أذونات دور في مجموعة أذونات المستخدم الحالية |
| hasauthority (السلطة) | إرجاع صحيح إذا كانت أذونات المستخدم الحالية لها سلطة (تطابق ما إذا كان هناك إذن "سلطة") في مجموعة أذونات المستخدم الحالية. |
| Hasanyauthority (السلطة) | إرجاع صحيح إذا كان لديك أي أذونات في مجموعة أذونات المستخدم الحالية |
| Hasipaddress ("192.168.1.0/24") | Fanhui صحيح عند إرسال تطابق IP المطلوب |
التحكم في الوصول القائم على الأدوار RBAC (التحكم في الوصول القائم على الأدوار)
ربما تعتقد أن الطريقة أعلاه يمكن أن تلبي إدارة ترخيص الأمن لمعظم التطبيقات. ومع ذلك ، في الواقع ، غالبًا ما يعتمد ترخيص التطبيقات على مستوى المؤسسة على تغييرات ديناميكية في بيانات قاعدة البيانات. إذا تم استخدام الربط بين السلسلة أعلاه ، فلن يكون الأمر غير ودي للغاية للمطورين (كل تغيير في الموظفين يعني أن الكود يحتاج إلى تغيير ، وهو أمر غير معقول بشكل واضح) ، ولكن سيتم تقليل أداء التطبيق وفقًا لذلك. لذلك ، كيف تحلها؟
نموذج البيانات
يتطلب نموذج بيانات RBAC العام بشكل عام خمسة جداول (ثلاثة جداول كيان وجداول علاقة). تتضمن جداول الكيانات الثلاثة جدول المستخدم وجدول الدور وجدول الموارد. وتشمل جداول العلاقة. العلاقة بينهما هي كما يلي:
نموذج بيانات RBAC
جدول المستخدم
يجب أن يكون لدى أي مستخدم جدول مستخدم. عندما تقوم الشركة بتغيير الموظفين ، سيقوم موظفو الأعمال (مثل الموارد البشرية) بإضافة وحذف جدول البيانات.
قائمة الأدوار
ما هي الهويات التي لدى الشركة ، مثل الرئيس ، نائب الرئيس ، مدير القسم ، وما إلى ذلك ، وهناك موظفو أعمال يديرون البيانات على الطاولة بناءً على الوضع المحدد للشركة.
قائمة الموارد
تخزين الموارد التي تتطلب التحكم في الإذن. نظرًا لأننا نستخدم عناوين URL فعليًا عندما نستخدم تفويض التحكم ، فإن موظفي الأعمال لا ينظمون إدخالات بيانات وفقًا لعناوين URL ، ولكنهم يعملون بدلاً من ذلك في شكل واجهة عرض. لذلك في هذا الجدول ، القوائم والأزرار المقدمة إلى موظفي الأعمال وعنوان URL التي يتم التحكم فيها بواسطة الأذونات.
جدول العلاقة بين المستخدم
هناك علاقة كثيرة بين جدول المستخدم وجدول الدور (معرف المستخدم ومعرف الدور). يمكن للمستخدم أن يكون أدوارًا متعددة (يمكن للمستخدم أن يكون مدير قسم ومسؤول) ، في حين أن الدور غالباً ما يتوافق مع العديد من المستخدمين.
جدول العلاقة بين الموارد
يعد جدول الدور وجدول المورد () أيضًا علاقة عديدة. يمكن للدور الوصول إلى موارد متعددة (الأزرار أو القوائم ، وما إلى ذلك) ، ويمكن أيضًا الوصول إلى مورد من خلال أدوار متعددة.
يدعم Spring Security أيضًا تعبيرات مخصصة للقيام بهذه المهمة ، مثل هذا
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.