طبيعة أمن الربيع
يعد SPRING Security في الأساس سلسلة من المرشحات ، والتي يتم إدراجها بعد ذلك في سلسلة المرشح كمرشح منفصل ، يسمى FilterChainproxy. كما هو مبين في الشكل.
في الواقع ، يمكن أن يكون هناك سلسلة مرشح متعددة ضمن Filterchainproxy للتحقق من عناوين URL المختلفة ، وستزيد المرشحات المملوكة في سلسلة المرشح تلقائيًا أو تنقص وفقًا للخدمة المحددة. لذلك ليست هناك حاجة لعرض هذه المرشحات وتحديدها إلا إذا كنت ترغب في تنفيذ المنطق الخاص بك.
الفئات الرئيسية
المصادقة
المصادقة هي واجهة تستخدم لتمثيل معلومات مصادقة المستخدم. قبل قيام المستخدم بتسجيل الدخول إلى المصادقة ، سيتم تغليف المعلومات ذات الصلة في كائن من فئة التنفيذ المحددة للمصادقة. بعد نجاح مصادقة تسجيل الدخول ، سيتم إنشاء كائن مصادقة يحتوي على معلومات أكثر شمولاً ، بما في ذلك أذونات المستخدم والمعلومات الأخرى ، ثم يتم حفظها في SecurityContext التي يحتفظ بها SecurityContexholder للاتصال بالبرامج اللاحقة ، مثل مصادقة حقوق الوصول.
المصادقة
الواجهة الرئيسية المستخدمة للتحقق هي المصادقة ، والتي لديها طريقة واحدة فقط:
واجهة عامة مصادقة {مصادقة المصادقة (مصادقة المصادقة) يلقي المصادقة ؛}قد تكون هناك ثلاث حالات بعد تشغيل طريقة المصادقة ():
التحقق ناجحًا ويتم إرجاع مصادقة مع معلومات المستخدم.
فشل التحقق ، وتم طرح استثناء مصادقة.
غير قادر على الحكم ، عودة لاغية.
Providermanager
Providermanager هو التنفيذ الأكثر شيوعًا لـ AuthenticationManager أعلاه. لا يتعامل مع التحقق من تلقاء نفسه ، ولكنه ينفصل عن التحقق من قائمة المصادقة التي تقوم بتكوينها ، ثم يقوم باستدعاء كل مصادقة بدوره للمصادقة. في هذه العملية ، طالما تم المصادقة على المصادقة بنجاح ، فلن يستمر أي التحقق من ذلك. سيتم استخدام نتيجة المصادقة هذه مباشرة كنتيجة مصادقة لـ Providermanager.
عملية التصديق
يسجل المستخدمون الدخول باستخدام اسم المستخدم وكلمة المرور الخاصة بهم.
يلفت Spring Security اسم المستخدم وكلمة المرور التي تم الحصول عليها في فئة تنفيذ واجهة المصادقة ، مثل UserNamePasswordauthenticationToken المستخدمة الشائعة الاستخدام.
تمرير كائن المصادقة الذي تم إنشاؤه أعلاه إلى فئة تنفيذ AuthenticationManager ProviderManager للمصادقة.
يستدعي Providermanager كل مصادقة provider بدوره للمصادقة. بعد نجاح المصادقة ، يقوم كائن المصادقة بتغليف أذونات المستخدم والمعلومات الأخرى.
قم بتعيين كائن المصادقة الذي تم إرجاعه بواسطة AuthenticationManager إلى SecurityContext الحالي.
التحقق المخصص
مع احتياطيات المعرفة أعلاه ، يمكنك تخصيص طريقة التحقق. مما سبق ، يمكننا أن نرى أنه في الواقع ، يتم استخدام المصادقة في الواقع لأداء عمليات التحقق. لذلك ، إذا كنت ترغب في تخصيص طريقة التحقق ، فأنت بحاجة فقط إلى تنفيذ AuthenticationProvider الخاص بك ثم إضافته إلى Providermanager.
تخصيص AuthenticationProvider
ComponentPublic class customauthenticationprovider تنفذ AuthenticationProvider {Override المصادقة العامة المصادقة (مصادقة المصادقة) يلقي AuthenticationException {string name = Authentication.getName () ؛ سلسلة كلمة مرور = المصادقة. إذا (يجب أن (يجب أن يكون (يجب أن يرجع usternamepassententicalicationtoken (الاسم ، كلمة المرور ، arraylist <> ()) ؛ } آخر {return null ؛ }} Override Public Boolean Support (Class <؟> anity) {return Authentication.equals (usernamepasswordauthenticationtoken.class) ؛ }}تقبل طريقة الدعم () معلمة المصادقة لتحديد ما إذا كانت المصادقة التي تم تمريرها هي نوع يمكن لـ AuthenticationProvider التعامل معه.
تسجيل AuthenticationProvider
الآن قم بتسجيل AuthenticationProvider الذي أنشأته للتو في Providermanager واكتملت جميع العمليات.
@configuration@enablewebsecurity@componentscan ("org.baeldung.security") يمتد SecurityConfig للطبقة العامة على WebSecurityConfigureRadapter Override Protected void configure (AuthenticationManagerBuilder Auth) يلقي الاستثناء {auth.AuthenticationProvider (AuthProvider) ؛ } override contected void config (httpsecurity http) يلقي الاستثناء {http.authorizerequests (). }}لخص
ما سبق هو تحليل عملية التحقق من أمان الربيع وطرق التحقق المخصصة التي قدمها لك المحرر. آمل أن يكون ذلك مفيدًا لك. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر إليك في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!