/ / स्प्रिंग सिक्योरिटी फ़िल्टर चेन प्रोग्रामेटिकली - वसंत-सुरक्षा, वसंत-नफरत के साथ एप्लिकेशन के अंदर से उपयोगकर्ता प्राधिकरण की पुष्टि करना

स्प्रिंग सिक्योरिटी फ़िल्टर चेन प्रोग्रामेटिकली - वसंत-सुरक्षा, वसंत-नफरत के साथ एप्लिकेशन के अंदर से उपयोगकर्ता प्राधिकरण की पुष्टि करना

मैं वर्तमान में एक आवेदन विकसित कर रहा हूँवसंत बूट 1.4.2.RELEASE और वसंत सुरक्षा 4.1.3.RELEASE। एप्लिकेशन में रेस्ट कंट्रोलर हैं और जेसन संदेश प्राप्त करते हैं और जवाब देते हैं। यह एप्लिकेशन एक कोणीय अनुप्रयोग के साथ संवाद करेगा। मेरे पास पहले से प्रमाणीकरण और प्रमाणीकरण विन्यास के साथ काम कर रहा है जैसे:

http.authorizeRequests()
.antMatchers(HttpMethod.POST, "/foo/bar/**")
.access("(hasRole("OPERATOR") && hasRole("MAKER")) || hasRole("ADMIN")")
.anyRequest().authenticated()
.and()
.httpBasic();

और RestControllers विधियों में नियम जैसे:

@PreAuthorize("hasRole(#id) || hasRole("ADMIN")")

सब कुछ बिना किसी समस्या के काम कर रहा है, अब मैं "एमवसंत Hateoas जोड़ना। मुझे पता है कि हेटोआ संसाधनों के लिए उपयोगकर्ता प्रमाणीकरण से संबंधित नहीं है, लेकिन मैं कोणीय ऐप को अतिरिक्त जानकारी भेजने में सक्षम होना चाहता हूं। न केवल संसाधन का लिंक बल्कि उपयोगकर्ता के पास कौन सी कार्रवाइयों (http क्रियाएं) तक पहुंच है।

मैं सुरक्षा में सुधार के लिए ऐसा नहीं करना चाहता हूंएप्लिकेशन का, यह सिर्फ उपयोगकर्ता अनुभव को बेहतर बनाने के लिए है। कोणीय ऐप में मैं सर्वर को भेजने के आधार पर कार्यक्षमता को सक्रिय या निष्क्रिय करने में सक्षम होना चाहता हूं।

तो यहां मेरा प्रश्न आता है, क्या कोई उपलब्ध हैस्प्रिंग सिक्योरिटी में कक्षा जो मैं एक यूआरएल का परीक्षण करने के लिए ऑटोवायर कर सकता हूं और देख सकता हूं कि उपयोगकर्ता उस विशेष यूआरएल पर एक विशिष्ट कार्रवाई निष्पादित करने के लिए अधिकृत है या नहीं?

स्प्रिंग सिक्योरिटी प्रलेखन में उल्लिखित सभी वर्ग जिन्हें मैंने अब तक परीक्षण किया है, @Autowire एनोटेशन द्वारा मान्यता प्राप्त नहीं हैं।

उत्तर:

उत्तर № 1 के लिए 1

दिलचस्प सवाल, देखो WebInvocationPrivilegeEvaluator यह आपकी जरूरतों के अनुरूप हो सकता है।

isAllowed(String contextPath, String uri, String method, Authentication authentication)

उदाहरण के लिए आप इसे क्रिया में देख सकते हैं यहाँ.