有几个示例 web 应用程序可用于该项目。为了避免过大的下载,只有 "tutorial" 和 "contacts" 示例被包含在分发的 zip 文件中。其它可以直接从源代码建立,你可以获得如介绍中所述。自己构建项目很容易,在项目网站 http://spring.io/spring-security/ 上有更多的详细信息。本章中提到的所有路径都与项目源目录相对应。
教程示例是让你入门的一个很好的基本示例。它始终使用简单的命名空间配置。已编译的应用程序包含在分发 zip 文件中,准备好部署到 web 容器中(
我们建议你从教程示例开始,因为 XML 是最小的并且易于遵循。最重要的是,你可以很容易地将这一个 XML 文件(及其相应的 联系人示例是一个高级示例,它说明了域对象访问控制列表(ACL)除了基本的应用程序安全性之外更强大的特性。应用程序提供了一个接口,用户可以通过该接口来管理联系人(域对象)的简单数据库。
要部署,只需将 Spring Security 文件中的 WAR 文件复制到容器的 启动容器后,检查应用程序是否可以加载。访问 http://localhost:8080/contacts(或者无论哪个 URL 适合你的 web 容器和部署的 WAR)。 接下来,单击 "Debug"。将提示你进行身份验证,并在该页上建议一系列用户名和密码。只需对其中的任何一个进行身份验证,并查看生成的页面。它应该包含类似于以下的成功消息: Security Debug Information Authentication object is of type: org.springframework.security.authentication.UsernamePasswordAuthenticationToken Authentication object as a String: org.springframework.security.authentication.UsernamePasswordAuthenticationToken@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!
一旦你成功接收到上述消息,返回到示例应用程序的主页,然后单击 "Manage"。然后,你可以尝试应用程序。注意,只显示当前登录用户可用的联系人,并且只有 应用程序允许你修改与不同联系人关联的访问控制列表。一定要尝试一下,通过查看应用程序上下文 XML 文件来理解它是如何工作的。 OpenID 示例演示如何使用命名空间配置 OpenID,以及如何为 Google、Yahoo 和 MyOpenID 身份提供者设置属性交换配置(如果愿意,可以尝试添加其它身份提供者)。它使用基于 JQuery 的 openid-selector 项目来提供用户友好的登录页面,该页面允许用户轻松地选择提供者,而不是输入完整的 OpenID 标识符。
这个应用程序与常用的身份认证方案不同的是,它允许任何用户访问这个站点(只要它们的 OpenID 身份认证是成功的)。第一次登录时,你会收到一个 "Welcome [your name]" 的信息。如果注销并回滚(使用相同的 OpenID 身份),则这应该更改为 "Welcome Back"。这是通过使用自定义
CAS 示例要求你同时运行 CAS 服务器和 CA S客户端。它不包含在分发中,所以你应该检查介绍中的项目代码。你将在 JAAS 示例是如何使用具有 Spring Security 的 JAAS 登录模块的非常简单的示例。如果用户名等于密码,提供的 LoginModule 将成功验证用户,否则将抛出 LoginException。本示例中使用的 AuthorityGranter 总是授予角色 ROLE_USER。示例应用程序还演示了如何通过将 jaas-api-provision 设置为 "true" 来作为 LoginModule 返回的 JAAS 主题运行。 Spring Security 使用 JIRA 来管理错误报告和增强请求。如果发现 bug,请使用 JIRA 记录报告。不要将它记录在支持论坛、邮件列表或通过电子邮件发送项目的开发人员。这种方法是特设的,我们更喜欢使用更正式的进程来管理 bug。 如果可能的话,在你的问题报告中,请提供一个 JUnit 测试来演示任何不正确的行为。或者,更好的是,提供一个修补这个问题的补丁。类似地,欢迎将增强记录到问题跟踪器中,不过我们只接受增强请求,如果你包括相应的单元测试。这是确保项目测试覆盖率得到充分维护的必要条件。 你可以在 https://github.com/spring-projects/spring-security/issues 中访问问题跟踪。 我们欢迎你参与 Spring Security 项目。有很多方法可以做出贡献,包括阅读论坛和回答其他人的问题,编写新代码,改进现有代码,帮助编写文档,开发示例或教程,或者简单地提出建议。 欢迎有关 Spring Security 的问题和意见。你可以在 Stack Overflow 网站使用 Spring 或在 http://spring.io/questions 参与框架的其他用户讨论 Spring Security。请记住使用 JIRA 进行 bug 报告,如上文所解释的那样。 |