# 方法安全性

# <method-security>

这个元素是在 Spring Security bean 上添加对方法安全的支持的主要手段。方法可以通过使用注释(在接口或类级别上定义)或通过定义一组切入点来保护。

# <method-security>属性

  • **pre-post-enabled **为此应用程序上下文启用 Spring Security 的 pre 和 post 调用注释(@prefilter、@preauthorize、@postfilter、@postauthorize)。默认值为“true”。

  • 安全启用为此应用程序上下文启用 Spring Security 的 @Secured 注释。默认为“false”。

  • 支持 JSR250为此应用程序上下文启用 JSR-250 授权注释(@roleslowled,@permitall,@denyall)。默认为“false”。

  • 代理-目标-类如果为真,将使用基于类的代理,而不是基于接口的代理。默认为“false”。

# <method-security>的子元素

# <global-method-security>

这个元素是在 Spring Security bean 上添加对方法安全的支持的主要手段。方法可以通过使用注释(在接口或类级别定义)或使用 AspectJ 语法将一组切入点定义为子元素来保护。

# <global-method-security>属性

  • **access-decision-manager-ref **Method Security 使用与 Web Security 相同的AccessDecisionManager配置,但是可以使用此属性重写此配置。默认情况下,基于确认的实现用于 RoleVoter 和 AuthentidVoter。

  • **认证-管理器-ref **对方法安全性应该使用的AuthenticationManager的引用。

  • JSR250-注释指定是否使用 JSR-250 样式属性(例如“允许滚动”)。这将需要 Classpath 上的 javax.annotation.security 类。将此设置为 true 还会为Jsr250Voter添加AccessDecisionManager,因此,如果你正在使用自定义实现并希望使用这些注释,则需要确保执行此操作。

  • 元数据-源-参考可以提供一个外部MethodSecurityMetadataSource实例,该实例将优先于其他源(例如默认注释)。

  • 模式此属性可以设置为“AspectJ”,以指定应该使用 AspectJ,而不是默认的 Spring AOP。安全方法必须与spring-security-aspects模块中的AnnotationSecurityAspect交织在一起。

需要注意的是,AspectJ 遵循了 Java 的规则,即接口上的注释不会被继承。这意味着在接口上定义安全注释的方法将不受保护。相反,在使用 AspectJ 时,你必须在类上放置安全注释。

  • 秩序允许为方法安全性拦截器设置通知“order”。

  • pre-post 注释指定是否应为此应用程序上下文启用 Spring Security 的 pre 和 post 调用注释(@prefilter、@preauthorize、@postfilter、@postauthorize)。默认值为“禁用”。

  • 代理-目标-类如果为真,将使用基于类的代理,而不是基于接口的代理。

  • **Run-as-manager-ref **对可选RunAsManager实现的引用,该实现将由配置的MethodSecurityInterceptor使用

  • 安全注释指定是否应为此应用程序上下文启用 Spring Security 的 @Secured 注释。默认值为“禁用”。

# <global-method-security>的子元素

# <after-invocation-provider>

这个元素可以用来装饰AfterInvocationProvider,以便由<global-method-security>命名空间维护的安全拦截器使用。你可以在global-method-security元素中定义零个或更多个,每个元素都有一个ref属性,指向应用程序上下文中的AfterInvocationProvider Bean 实例。

# <after-invocation-provider>的父元素

# <after-invocation-provider>属性

  • 参考定义了对实现AfterInvocationProvider的 Spring Bean 的引用。

# <pre-post-annotation-handling>

允许完全替换用于处理 Spring 安全性的 pre 和 post 调用注释(@prefilter、@preauthorize、@postfilter、@postauthorize)的缺省基于表达式的机制。仅在启用了这些注释的情况下才会应用。

# <pre-post-annotation-handling>的父元素

# <pre-post-annotation-handling>的子元素

# <invocation-attribute-factory>

定义 prepostinvocationAttributeFactory 实例,该实例用于从带注释的方法生成 pre 和 post 调用元数据。

# <invocation-attribute-factory>的父元素

# <invocation-attribute-factory>属性

  • 参考定义了对 Spring Bean ID 的引用。

# <post-invocation-advice>

PostInvocationAdviceProvider与 ref 一起定制为 `PostInvocationAuthorizationAdvice元素的PostInvocationAuthorizationAdvice`。

# <post-invocation-advice>的父元素

# <post-invocation-advice>属性

  • 参考定义了对 Spring Bean ID 的引用。

# <pre-invocation-advice>

PreInvocationAuthorizationAdviceVoter与 ref 一起定制为 `PreInvocationAuthorizationAdviceVoter元素的PreInvocationAuthorizationAdviceVoter`。

# <pre-invocation-advice>的父元素

# <pre-invocation-advice>属性

  • 参考定义了对 Spring Bean ID 的引用。

# 使用固定方法

<protect-pointcut>不是使用@Secured注释在单个方法或类的基础上定义安全属性,而是可以使用<protect-pointcut>元素在服务层中的整个方法和接口集合中定义跨领域的安全约束。你可以在命名空间介绍中找到一个示例。

# <protect-pointcut>的父元素

# <protect-pointcut>属性

  • 访问Access Configuration Attributes 列表,该列表应用于匹配切入点的所有方法,例如“role_a,role_b”

  • 表达式AspectJ 表达式,包括execution关键字。例如,execution(int com.foo.TargetObject.countLength(String))

# <intercept-methods>

可以在 Bean 定义中使用,以便向 Bean 添加安全拦截器,并为 Bean 的方法设置访问配置属性

# <intercept-methods>属性

  • **access-decision-manager-ref **可选的 AccessDecisionManager Bean ID 将被创建的方法安全拦截器使用。

# <intercept-methods>的子元素

# <method-security-metadata-source>

创建一个 MethodSecurityMetaDataSource 实例

# <method-security-metadata-source>属性

  • 身份证 Bean 标识符,用于在上下文的其他地方引用 Bean。

  • 使用表达式允许在 <intercept-url>元素中的“access”属性中使用表达式,而不是使用传统的配置属性列表。默认为“false”。如果启用,每个属性应该包含一个布尔表达式。如果表达式计算为“true”,则将授予访问权限。

# <method-security-metadata-source>的子元素

# <protect>

定义受保护的方法和应用于该方法的访问控制配置属性。我们强烈建议你不要将“protect”声明与“global-method-security”提供的任何服务混为一谈。

# <protect>的父元素

# <protect>属性

  • 访问访问应用于该方法的配置属性列表,例如“role_a,role_b”。

  • 方法一个方法名

网络安全LDAP 安全性