2021-11-01 14:50:25 -06:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								= Method Security
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[[nsa-method-security]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								== <method-security>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								This element is the primary means of adding support for securing methods on Spring Security beans.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Methods can be secured by the use of annotations (defined at the interface or class level) or by defining a set of pointcuts.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[[nsa-method-security-attributes]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								=== <method-security> attributes
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[[nsa-method-security-pre-post-enabled]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* **pre-post-enabled**
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Enables Spring Security's pre and post invocation annotations (@PreFilter, @PreAuthorize, @PostFilter, @PostAuthorize) for this application context.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Defaults to "true".
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[[nsa-method-security-secured-enabled]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* **secured-enabled**
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Enables Spring Security's @Secured annotation for this application context.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Defaults to "false".
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[[nsa-method-security-jsr250-enabled]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* **jsr250-enabled**
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Enables JSR-250 authorization annotations (@RolesAllowed, @PermitAll, @DenyAll) for this application context.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Defaults to "false".
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-07-08 11:37:36 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								[[nsa-method-security-mode]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* **mode**
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								If set to "aspectj", then uses AspectJ to intercept method invocations.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-11-01 14:50:25 -06:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								[[nsa-method-security-proxy-target-class]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* **proxy-target-class**
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								If true, class based proxying will be used instead of interface based proxying.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Defaults to "false".
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-06-23 16:26:40 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								[[nsa-method-security-security-context-holder-strategy-ref]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* **security-context-holder-strategy-ref**
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Specifies a SecurityContextHolderStrategy to use when retrieving the SecurityContext.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Defaults to the value returned by SecurityContextHolder.getContextHolderStrategy().
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-04 15:34:16 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								[[nsa-method-security-observation-registry-ref]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* **observation-registry-ref**
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								A reference to the `ObservationRegistry` used for the `FilterChain` and related components
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-11-01 14:50:25 -06:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								[[nsa-method-security-children]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								=== Child Elements of <method-security>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* xref:servlet/appendix/namespace/http.adoc#nsa-expression-handler[expression-handler]
							 
						 
					
						
							
								
									
										
										
										
											2022-07-12 17:10:17 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								* <<nsa-protect-pointcut,protect-pointcut>>
							 
						 
					
						
							
								
									
										
										
										
											2021-11-01 14:50:25 -06:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[[nsa-global-method-security]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								== <global-method-security>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								This element is the primary means of adding support for securing methods on Spring Security beans.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Methods can be secured by the use of annotations (defined at the interface or class level) or by defining a set of pointcuts as child elements, using AspectJ syntax.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[[nsa-global-method-security-attributes]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								=== <global-method-security> Attributes
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[[nsa-global-method-security-access-decision-manager-ref]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* **access-decision-manager-ref**
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Method security uses the same `AccessDecisionManager` configuration as web security, but this can be overridden using this attribute.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								By default an AffirmativeBased implementation is used for with a RoleVoter and an AuthenticatedVoter.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[[nsa-global-method-security-authentication-manager-ref]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* **authentication-manager-ref**
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								A reference to an `AuthenticationManager` that should be used for method security.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[[nsa-global-method-security-jsr250-annotations]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* **jsr250-annotations**
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Specifies whether JSR-250 style attributes are to be used (for example "RolesAllowed").
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								This will require the javax.annotation.security classes on the classpath.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Setting this to true also adds a `Jsr250Voter` to the `AccessDecisionManager`, so you need to make sure you do this if you are using a custom implementation and want to use these annotations.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[[nsa-global-method-security-metadata-source-ref]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* **metadata-source-ref**
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								An external `MethodSecurityMetadataSource` instance can be supplied which will take priority over other sources (such as the default annotations).
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[[nsa-global-method-security-mode]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* **mode**
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								This attribute can be set to "aspectj" to specify that AspectJ should be used instead of the default Spring AOP.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Secured methods must be woven with the `AnnotationSecurityAspect` from the `spring-security-aspects` module.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								It is important to note that AspectJ follows Java's rule that annotations on interfaces are not inherited.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								This means that methods that define the Security annotations on the interface will not be secured.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Instead, you must place the Security annotation on the class when using AspectJ.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[[nsa-global-method-security-order]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* **order**
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Allows the advice "order" to be set for the method security interceptor.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[[nsa-global-method-security-pre-post-annotations]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* **pre-post-annotations**
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Specifies whether the use of Spring Security's pre and post invocation annotations (@PreFilter, @PreAuthorize, @PostFilter, @PostAuthorize) should be enabled for this application context.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Defaults to "disabled".
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[[nsa-global-method-security-proxy-target-class]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* **proxy-target-class**
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								If true, class based proxying will be used instead of interface based proxying.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[[nsa-global-method-security-run-as-manager-ref]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* **run-as-manager-ref**
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								A reference to an optional `RunAsManager` implementation which will be used by the configured `MethodSecurityInterceptor`
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[[nsa-global-method-security-secured-annotations]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* **secured-annotations**
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Specifies whether the use of Spring Security's @Secured annotations should be enabled for this application context.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Defaults to "disabled".
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[[nsa-global-method-security-children]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								=== Child Elements of <global-method-security>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* <<nsa-after-invocation-provider,after-invocation-provider>>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* xref:servlet/appendix/namespace/http.adoc#nsa-expression-handler[expression-handler]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* <<nsa-pre-post-annotation-handling,pre-post-annotation-handling>>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* <<nsa-protect-pointcut,protect-pointcut>>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[[nsa-after-invocation-provider]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								== <after-invocation-provider>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								This element can be used to decorate an `AfterInvocationProvider` for use by the security interceptor maintained by the `<global-method-security>` namespace.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								You can define zero or more of these within the `global-method-security` element, each with a `ref` attribute pointing to an `AfterInvocationProvider` bean instance within your application context.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[[nsa-after-invocation-provider-parents]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								=== Parent Elements of <after-invocation-provider>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* <<nsa-global-method-security,global-method-security>>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[[nsa-after-invocation-provider-attributes]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								=== <after-invocation-provider> Attributes
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[[nsa-after-invocation-provider-ref]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* **ref**
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Defines a reference to a Spring bean that implements `AfterInvocationProvider`.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[[nsa-pre-post-annotation-handling]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								== <pre-post-annotation-handling>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Allows the default expression-based mechanism for handling Spring Security's pre and post invocation annotations (@PreFilter, @PreAuthorize, @PostFilter, @PostAuthorize) to be replaced entirely.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Only applies if these annotations are enabled.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[[nsa-pre-post-annotation-handling-parents]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								=== Parent Elements of <pre-post-annotation-handling>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* <<nsa-global-method-security,global-method-security>>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[[nsa-pre-post-annotation-handling-children]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								=== Child Elements of <pre-post-annotation-handling>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* <<nsa-invocation-attribute-factory,invocation-attribute-factory>>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* <<nsa-post-invocation-advice,post-invocation-advice>>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* <<nsa-pre-invocation-advice,pre-invocation-advice>>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[[nsa-invocation-attribute-factory]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								== <invocation-attribute-factory>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Defines the PrePostInvocationAttributeFactory instance which is used to generate pre and post invocation metadata from the annotated methods.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[[nsa-invocation-attribute-factory-parents]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								=== Parent Elements of <invocation-attribute-factory>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* <<nsa-pre-post-annotation-handling,pre-post-annotation-handling>>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[[nsa-invocation-attribute-factory-attributes]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								=== <invocation-attribute-factory> Attributes
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[[nsa-invocation-attribute-factory-ref]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* **ref**
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Defines a reference to a Spring bean Id.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[[nsa-post-invocation-advice]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								== <post-invocation-advice>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Customizes the `PostInvocationAdviceProvider` with the ref as the `PostInvocationAuthorizationAdvice` for the <pre-post-annotation-handling> element.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[[nsa-post-invocation-advice-parents]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								=== Parent Elements of <post-invocation-advice>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* <<nsa-pre-post-annotation-handling,pre-post-annotation-handling>>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[[nsa-post-invocation-advice-attributes]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								=== <post-invocation-advice> Attributes
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[[nsa-post-invocation-advice-ref]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* **ref**
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Defines a reference to a Spring bean Id.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[[nsa-pre-invocation-advice]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								== <pre-invocation-advice>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Customizes the `PreInvocationAuthorizationAdviceVoter` with the ref as the `PreInvocationAuthorizationAdviceVoter` for the <pre-post-annotation-handling> element.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[[nsa-pre-invocation-advice-parents]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								=== Parent Elements of <pre-invocation-advice>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* <<nsa-pre-post-annotation-handling,pre-post-annotation-handling>>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[[nsa-pre-invocation-advice-attributes]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								=== <pre-invocation-advice> Attributes
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[[nsa-pre-invocation-advice-ref]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* **ref**
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Defines a reference to a Spring bean Id.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[[nsa-protect-pointcut]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								== Securing Methods using
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								`<protect-pointcut>`
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Rather than defining security attributes on an individual method or class basis using the `@Secured` annotation, you can define cross-cutting security constraints across whole sets of methods and interfaces in your service layer using the `<protect-pointcut>` element.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								You can find an example in the xref:servlet/authorization/method-security.adoc#ns-protect-pointcut[namespace introduction].
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[[nsa-protect-pointcut-parents]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								=== Parent Elements of <protect-pointcut>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* <<nsa-global-method-security,global-method-security>>
							 
						 
					
						
							
								
									
										
										
										
											2022-07-12 17:10:17 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								* <<nsa-method-security,method-security>>
							 
						 
					
						
							
								
									
										
										
										
											2021-11-01 14:50:25 -06:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[[nsa-protect-pointcut-attributes]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								=== <protect-pointcut> Attributes
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[[nsa-protect-pointcut-access]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* **access**
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Access configuration attributes list that applies to all methods matching the pointcut, e.g.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"ROLE_A,ROLE_B"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[[nsa-protect-pointcut-expression]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* **expression**
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								An AspectJ expression, including the `execution` keyword.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								For example, `execution(int com.foo.TargetObject.countLength(String))`.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[[nsa-intercept-methods]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								== <intercept-methods>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Can be used inside a bean definition to add a security interceptor to the bean and set up access configuration attributes for the bean's methods
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[[nsa-intercept-methods-attributes]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								=== <intercept-methods> Attributes
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-07-06 12:52:32 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								[[nsa-intercept-methods-use-authorization-manager]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* **use-authorization-manager**
							 
						 
					
						
							
								
									
										
										
										
											2022-10-05 19:49:53 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Use AuthorizationManager API instead of AccessDecisionManager (defaults to true)
							 
						 
					
						
							
								
									
										
										
										
											2022-07-06 12:52:32 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[[nsa-intercept-methods-authorization-manager-ref]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* **authorization-manager-ref**
							 
						 
					
						
							
								
									
										
										
										
											2024-11-09 23:28:30 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Optional AuthorizationManager bean ID to be used instead of the default (supersedes use-authorization-manager)
							 
						 
					
						
							
								
									
										
										
										
											2021-11-01 14:50:25 -06:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[[nsa-intercept-methods-access-decision-manager-ref]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* **access-decision-manager-ref**
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Optional AccessDecisionManager bean ID to be used by the created method security interceptor.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[[nsa-intercept-methods-children]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								=== Child Elements of <intercept-methods>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* <<nsa-protect,protect>>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[[nsa-method-security-metadata-source]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								== <method-security-metadata-source>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Creates a MethodSecurityMetadataSource instance
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[[nsa-method-security-metadata-source-attributes]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								=== <method-security-metadata-source> Attributes
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[[nsa-method-security-metadata-source-id]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* **id**
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								A bean identifier, used for referring to the bean elsewhere in the context.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[[nsa-method-security-metadata-source-use-expressions]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* **use-expressions**
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Enables the use of expressions in the 'access' attributes in <intercept-url> elements rather than the traditional list of configuration attributes.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Defaults to 'false'.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								If enabled, each attribute should contain a single Boolean expression.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								If the expression evaluates to 'true', access will be granted.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[[nsa-method-security-metadata-source-children]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								=== Child Elements of <method-security-metadata-source>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* <<nsa-protect,protect>>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[[nsa-protect]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								== <protect>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Defines a protected method and the access control configuration attributes that apply to it.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								We strongly advise you NOT to mix "protect" declarations with any services provided "global-method-security".
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[[nsa-protect-parents]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								=== Parent Elements of <protect>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* <<nsa-intercept-methods,intercept-methods>>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* <<nsa-method-security-metadata-source,method-security-metadata-source>>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[[nsa-protect-attributes]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								=== <protect> Attributes
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[[nsa-protect-access]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* **access**
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Access configuration attributes list that applies to the method, e.g.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								"ROLE_A,ROLE_B".
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[[nsa-protect-method]]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								* **method**
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								A method name