मैंने अपने आराम एपीआई में वसंत सुरक्षा को लागू करने के लिए कुछ धागे का पालन किया है। प्रारंभ में मैं @ सुरक्षित एनोटेशन पर फंस गया हूं, अब मुझे यह हल हो गया है, मैं पहुंच से वंचित हूं।@ सुरक्षित उपयोगकर्ता प्राप्त उपयोगकर्ता के लिए एक्सेस अस्वीकृत
मेरी समस्या की तरह लगता है जैसे ध्वनि: @secured with granted authorities throws access denied exception - लेकिन मुझे अभी भी पहुंच अस्वीकार कर रही है।
यहाँ मेरी सेटअप है:
वसंत-security.xml
<authentication-manager>
<authentication-provider user-service-ref="userDetailsService">
<password-encoder ref="passwordEncoder" />
</authentication-provider>
</authentication-manager>
<beans:bean id="passwordEncoder" class="org.springframework.security.authentication.encoding.PlaintextPasswordEncoder"/>
<user-service id="userDetailsService">
<user name="john" password="john1" authorities="ROLE_USER, ROLE_ADMIN" />
<user name="jane" password="jane1" authorities="ROLE_USER" />
<user name="apiuser" password="apiuser" authorities="PERMISSION_TEST" />
</user-service>
नियंत्रक:
@Controller
@RequestMapping("/secure")
public class SecureController
{
private static final Logger logger = Logger.getLogger(SecureController.class);
@Secured("PERMISSION_TEST")
@RequestMapping(value = "/makeRequest", method = RequestMethod.GET)
@ResponseBody
public SimpleDTO executeSecureCall()
{
logger.debug("[executeSecureCall] Received request to a secure method");
SimpleDTO dto = new SimpleDTO();
dto.setStringVariable("You are authorized!");
return dto;
}
}
अब - बिना उचित
<security:global-method-security secured-annotations="enabled"/>
मेरे अनुरोध के माध्यम से (इस वजह से @Secured एनोटेशन नजरअंदाज कर दिया है) हो जाता है। जब मैं उस में और "apiuser"/"apiuser" का उपयोग कर उस तक पहुंचने में डाल दिया, मैं पहुँच हो रही है से इनकार किया, डीबग लॉग:
11:42:43,899 [http-apr-8080-exec-4] DEBUG MethodSecurityInterceptor - Previously Authenticated: org.springframew[email protected]cc12af5d: Principal: [email protected]: Username: apiuser; Password: [PROTECTED]; Enabled: true; AccountNonExpired: true; credentialsNonExpired: true; AccountNonLocked: true; Granted Authorities: PERMISSION_TEST; Credentials: [PROTECTED]; Authenticated: true; Details: org.sprin[email protected]957e: RemoteIpAddress: 127.0.0.1; SessionId: null; Granted Authorities: PERMISSION_TEST
11:42:43,899 [http-apr-8080-exec-4] DEBUG AffirmativeBased - Voter: [email protected], returned: 0
11:42:43,900 [http-apr-8080-exec-4] DEBUG AffirmativeBased - Voter: [email protected]6ec2, returned: 0
11:42:43,902 [http-apr-8080-exec-4] DEBUG AnnotationMethodHandlerExceptionResolver - Resolving exception from handler [[email protected]]: org.springframework.security.access.AccessDeniedException: Access is denied
11:42:43,905 [http-apr-8080-exec-4] DEBUG ResponseStatusExceptionResolver - Resolving exception from handler [[email protected]]: org.springframework.security.access.AccessDeniedException: Access is denied
11:42:43,906 [http-apr-8080-exec-4] DEBUG DefaultHandlerExceptionResolver - Resolving exception from handler [[email protected]]: org.springframework.security.access.AccessDeniedException: Access is denied
11:42:43,909 [http-apr-8080-exec-4] DEBUG DispatcherServlet - Could not complete request
org.springframework.security.access.AccessDeniedException: Access is denied
विचार?
अग्रिम धन्यवाद!
भयानक - बहुत बहुत धन्यवाद! –
मैंने उत्तर जोड़ा जो बताता है कि एक्सेस क्यों अस्वीकार कर दी गई थी। –
धन्यवाद! आंतरिक कार्यकलापों को जानना अच्छा है –