2014-05-02 6 views
5

सुरक्षित करने में असमर्थ मैं स्प्रिंग बूट एक्ट्यूएक्टर एंडपॉइंट्स को सुरक्षित करने की कोशिश कर रहा हूं। मेरे पास /api आरईएसटी इंटरफेस पर कामकाजी सुरक्षा है, लेकिन अंतर्निहित एंडपॉइंट्स पर सुरक्षा जोड़ने की कोशिश करना प्रतीत नहीं होता है।स्प्रिंग बूट प्रबंधन एक्ट्यूएटर एंडपॉइंट्स

management.context-path=/management 

मैं अपने जावा कॉन्फ़िग

@Override 
protected void configure(HttpSecurity http) throws Exception 
{ 
    http.csrf().disable(); 
    http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS); 

    http.authorizeRequests() 
     .antMatchers("/api/**").hasRole("READONLY") 
     .antMatchers("/management/**").hasRole("ADMIN"); 


    SecurityConfigurer<DefaultSecurityFilterChain, HttpSecurity> securityConfigurer = new XAuthTokenConfigurer(userDetailsServiceBean()); 
    http.apply(securityConfigurer); 
} 

जब मैं अपने ब्राउज़र का उपयोग /api से नीचे कुछ भी करने के लिए जाने के लिए इस है, मैं:

मैं में मेरी application.properties अंतिम बिंदुओं का समूह की स्थापना की है उम्मीद के अनुसार 403 वापस प्राप्त करें। उदाहरण के लिए/management/info करने के लिए जा रहे हैं, मैं देख रहा हूँ JSON लौटाए जाने जहां मैं भी एक 403

मैं अपने application.properties फ़ाइल को यह जोड़ने की कोशिश की उम्मीद करेंगे:

management.security.role=ADMIN 

लेकिन है कि या तो मदद नहीं की।

डिबग आउटपुट शो:

2014-05-02 10:15:30 DEBUG [localhost-startStop-1] ExpressionBasedFilterInvocationSecurityMetadataSource - 
Adding web access control expression 'hasRole('ROLE_READONLY')', for Ant [pattern='/api/**'] 

2014-05-02 10:15:30 DEBUG [localhost-startStop-1] ExpressionBasedFilterInvocationSecurityMetadataSource - 
Adding web access control expression 'hasRole('ROLE_ADMIN')', for Ant [pattern='/management/**'] 

और फिर मैं क्यों HTTP GET का प्रयास करें:

2014-05-02 10:16:39 DEBUG [http-nio-8443-exec-4] AntPathRequestMatcher - Checking match of request : '/management/info'; against '/css/**' 
2014-05-02 10:16:39 DEBUG [http-nio-8443-exec-4] AntPathRequestMatcher - Checking match of request : '/management/info'; against '/js/**' 
2014-05-02 10:16:39 DEBUG [http-nio-8443-exec-4] AntPathRequestMatcher - Checking match of request : '/management/info'; against '/images/**' 
2014-05-02 10:16:39 DEBUG [http-nio-8443-exec-4] AntPathRequestMatcher - Checking match of request : '/management/info'; against '/**/favicon.ico' 
2014-05-02 10:16:39 DEBUG [http-nio-8443-exec-4] AntPathRequestMatcher - Checking match of request : '/management/info'; against '/management/info' 
2014-05-02 10:16:39 DEBUG [http-nio-8443-exec-4] FilterChainProxy - /management/info has an empty filter list 

उत्तर

2

लॉग कि कहानी कहता है: "/ प्रबंधन/जानकारी एक खाली फिल्टर सूची है "क्योंकि इसे स्पष्ट रूप से अनदेखा के रूप में चिह्नित किया गया है (/ जानकारी हमेशा उपलब्ध होना चाहिए)। अन्य एक्ट्यूएटर एंडपॉइंट्स में से एक आज़माएं और देखें कि क्या आप अपेक्षा करते हैं कि वे व्यवहार करते हैं या नहीं। यदि आपको वास्तव में जानकारी एंडपॉइंट को सुरक्षित करने की आवश्यकता है तो आप endpoints.info.sensitive = true (मुझे लगता है) सेट कर सकते हैं।

+0

पूरी तरह से सही! मैंने जिन 2 कोशिश की हैं वे '/ info' और'/health' हैं और दोनों हमेशा उपलब्ध हैं। यदि मैं उदाहरण के लिए '/ beans' का उपयोग करता हूं, तो मुझे अपेक्षित 403 वापस मिलते हैं। आप शायद यह जानकारी [दस्तावेज़ों में] जोड़ सकते हैं (http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#production-ready- संवेदनशील-endpoints)? –

+0

यह वहां है: http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#production-ready- संवेदनशील-endpoints, http://docs.spring.io/spring-boot/docs/वर्तमान/संदर्भ/htmlsingle/# उत्पादन के लिए तैयार-अंतिमबिंदुओं। यदि आप और स्पष्टीकरण का सुझाव देना चाहते हैं, तो कृपया करें। –

+0

दरअसल, ऐसा लगता है कि मैंने तालिका में 'संवेदनशील' कॉलम नहीं देखा था। –

संबंधित मुद्दे