Spring - 3.0.1 - 中文官方文档

2026/1/18 5:25:04

entry-point-ref 属性来进行设置。

CAS 示例程序是一个在命名空间中使用自定义bean 的好例子,包含这种语法。如果你对 认证入口点并不熟悉,可以在技术纵览章中找到关于它们的讨论。 2.4. 保护方法

从版本2.0开始Spring Security 大幅改善了对你的服务层方法添加安全。它提供对 JSR-250安全注解的支持,这与框架提供的@secured 注解相似。从3.0开始,你也可以 使用新的基于表达式的注解。你可以提供安全给单个bean,使用intercept-methods 来装 饰bean 的声明, 或者你可以控制多个bean,通过实体服务层,使用AspectJ 演示的切 点功能。

2.4.1. 元素

这个元素用来在你的应用程序中启用基于安全的注解(通过在这个元素中设置响应的属性), 也可以用来声明将要应用在你的实体application context 中的安全切点组。你应该只定 义一个元素。下面的声明同时启用Spring Security 的 @Secured 和JSR-250注解:

向一个方法(或一个类或一个接口)添加注解,会限制对这个方法的访问。Spring Security 原生注解支持为方法定义一系列属性。这些属性将传递给AccessDecisionManager,进 行决策:

public interface BankService {

@Secured(\public Account readAccount(Long id); @Secured(\public Account[] findAccounts(); @Secured(\

public Account post(Account account, double amount); }

为了使用新的基于表达式的预付,你可以好似用

public interface BankService { @PreAuthorize(\

public Account readAccount(Long id); @PreAuthorize(\public Account[] findAccounts();

@PreAuthorize(\

public Account post(Account account, double amount); }

2.4.1.1. 使用protect-pointcut添加安全切点

protect-pointcut 是非常强大的,它让你可以用简单的声明对多个bean 的进行安全声明。 参考下面的例子:

这样会保护application context 中的符合条件的bean 的所有方法,这些bean 要在 com.mycompany 包下,类名以\结尾。ROLE_USER 的角色才能调用这些方

法。就像URL 匹配一样,指定的匹配要放在切点队列的最前面,第一个匹配的表达式才会 被用到。

2.5. 默认的AccessDecisionManager

这章假设你有一些Spring Security 权限控制有关的架构知识。如果没有,你可以跳过这 段,以后再来看,因为这章只是为了自定义的用户设置的,需要在简单基于角色安全的基础 上加一些客户化的东西。

当你使用命名空间配置时,默认的AccessDecisionManager 实例会自动注册,然后用来 为方法调用和web URL 访问做验证, 这些都是基于你设置的intercept-url 和

protect-pointcut 权限属性内容(和注解中的内容,如果你使用注解控制方法的权限)。 默认的策略是使用一个AffirmativeBased AccessDecisionManager ,以及RoleVoter 和AuthenticatedVoter。可以在authorization 中获得更多信息。 2.5.1. 自定义AccessDecisionManager

如果你需要使用一个更复杂的访问控制策略,把它设置给方法和web 安全是很简单的。 对于方法安全,你可以设置global-security 里的access-decision-manager-ref 属性, 用对应AccessDecisionManager bean 在application context 里的id:

access-decision-manager-ref=\...

web 安全安全的语法也是一样,但是放在http 元素里:

2.6. 验证管理器和命名空间

主要接口提供了验证服务在Spring Security 中, 是AuthenticationManager。通常 是Spring Security 中ProviderManager 类的一个实例, 如果你以前使用过框架,你可 能已经很熟悉了。如果没有,它会在稍后被提及,在#tech-intro-authentication。bean 实例被使用authentication-manager 命名空间元素注册。你不能好似用一个自定义的 AuthenticationManager 如果你使用HTTp 或方法安全,在命名空间中,但是它不应该 是一个问题, 因为你完全控制了使用的AuthenticationProvider。

你可能注册额外的AuthenticationProviderbean, 在ProviderManager 中,你可以使 用做这些事情,使用ref 属性, 这个属性的值,是你希望 添加的provider 的bean 的名字,比如:

class=\\

...

另一个常见的需求是,上下文中的另一个bean 可能需要引用AuthenticationManager。 你可以为AuthenticationManager 注册一个别名,然后在application context 的其他 地方使用这个名字。

class=\

[1]你可以在LDAP 的章节里,找到更多有关使用的ldap-server 的元素。

[2]access 中逗号分隔的值的解释依赖使用的AccessDecisionManager 的实现。在Spring Security 3.0中,这个属性也可以使用EL 表达式。

[3]在3.0之前按,这里列表中还包含remember-me 功能。这是因为一些配置上容易冲突 的问题所以在3.0中被移除了。在3.0中,AnonymousAuthenticationFilter 已经成为了 默认的配置的一部分,所以 元素无论是否设置auto-config 都会被添加到配置中。

[4] 参考匿名认证章节和AuthenticatedVoter 类获得更多细节, 和 IS_AUTHENTICATED_ANONYMOUSLY 如何被处理。 示例程序

项目中包含了很多web 实例程序。为了不让下载包变得太大,我们只把\和 \两个例子放到了zip 发布包里。你可以自己编译部署它们,也可以从Maven 中央资源库里获得单独的war 文件。我们建议你使用前一种方法。你可以按照简介里的介 绍获得源代码, 使用maven 编译它们也很简单。如果你需要的话, 可以在 http://www.springsource.org/security/网站上找到更多信息。 3.1. Tutorial示例

这个tutorial 示例是带你入门的很好的一个基础例子。它完全使用了简单命名空间配置。 编译好的应用就放在zip 发布包中, 已经准备好发布到你的web 容器中 (spring-security-samples-tutorial-2.0.x.war)。使用了form-based 验证机制,与 常用的remember-me 验证提供器相结合,自动使用cookie 记录登录信息。

我们推荐你从tutorial 例子开始,因为XML 非常小,也很容易看懂。更重要的是,你很 容易就可以把这个XML 文件(和它对应的web.xml 入口)添加到你的程序中。只有做基 本集成成功的时候,我们建议你试着添加方法验证和领域对象安全。 3.2. Contacts

Contacts 例子,是一个很高级的例子,它在基本程序安全上附加了领域对象的访问控制列 表,演示了更多强大的功能。

要发布它,先把Spring Security 发布中的war 文件按复制到你的容器的webapps 目录 下。这个war 文件应该叫做spring-security-samples-contacts-2.0.0.war(后边的 版本号,很大程度上依赖于你使用的发布版本)。

在启动你的容器之后, 检测一下程序是不是加载了, 访问

http://localhost:8080/contacts(或是其他你把war 发布后,对应于你web 容器的 URL)。

下一步,点击\。你将看到需要登录的提示,这页上会有一些测试用的用户名和密 码。随便使用其中的一个通过认证,就会看到结果页面。它应该会包含下面这样的一段成 功信息:

Security Debug Information

Authentication object is of type:

org.springframework.security.authentication.UsernamePasswordAuthenticatio nToken

Authentication object as a String:

org.springframework.security.authentication.UsernamePasswordAuthenticatio nToken@1f127853:

Principal: org.springframework.security.core.userdetails.User@b07ed00: Username: rod; \\

Password: [PROTECTED]; Enabled: true; AccountNonExpired: true; credentialsNonExpired: true; AccountNonLocked: true; \\ Granted Authorities: ROLE_SUPERVISOR, ROLE_USER; \\ Password: [PROTECTED]; Authenticated: true; \\ Details:

org.springframework.security.web.authentication.WebAuthenticationDetails@0: \\

RemoteIpAddress: 127.0.0.1; SessionId: 8fkp8t83ohar; \\ Granted Authorities: ROLE_SUPERVISOR, ROLE_USER

Authentication object holds the following granted authorities: ROLE_SUPERVISOR (getAuthority(): ROLE_SUPERVISOR) ROLE_USER (getAuthority(): ROLE_USER)

Success! Your web filters appear to be properly configured!

一旦你成功的看到了上面的信息,就可以返回例子程序的主页,点击\了。然后 你就可以尝试这个程序了。注意,只有当前登录的用户对应的联系信息会显示出来,而且 只有ROLE_SUPERVISOR 权限的用户可以授权删除他们的联系信息。在这场景后面, MethodSecurityInterceptor 保护着业务对象。

陈程序允许你修改访问控制列表,分配不同的联系方式。确保自己好好试用过,看看程序 里的上下文XML 文件,搞明白它是如何运行的。 3.3. LDAP例子

LDAP 例子程序提供了一个基础配置,同时使用命名空间配置和使用传统方式bean 的配置 方式,这两种配置方式都写在application context 文件里。这意味着,在这个程序里, 其实是配置了两个定义验证提供器。 3.4. CAS例子

CAS 示例要求你同时运行CAS 服务器和CAS 客户端。它没有包含在发布包里,你应该使 用简介中的介绍来获得源代码。你可以在sample/cas 目录下找到对应的文件。这里还有 一个Readme.txt 文件,解释如何从源代码树中直接运行服务器和客户端,提供完全的SSL 支持。你应该下载CAS 服务器web 程序(一个war 文件)从CAS 网站,把它放到 samples/cas/server 目录下。 3.5. Pre-Authentication例子

这个例子演示了如何从pre-authentication 框架绑定bean,从J2EE 容器中获得有用的登录


Spring - 3.0.1 - 中文官方文档.doc 将本文的Word文档下载到电脑
搜索更多关于: Spring - 3.0.1 - 中文官方文档 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219