【发布时间】:2014-05-24 11:33:32
【问题描述】:
我有一个 Java JSF 2、Spring 3、Hibernate 4 Java EE 应用程序,它使用第三方库对用户进行身份验证。我将所需的 CA 证书导入到我的 JVM 中,将第三个库添加到项目中并在 web.xml 中进行配置。图书馆从智能卡中读取用户详细信息。整个设置工作正常,用户被第三方库带到主页。
这是我保护应用程序的要求。
- 再检查一次用户是否存在于应用程序特定的数据库中
- 从应用程序数据库中获取该用户的角色
- 保护我的 JSF 页面
- 保护我的应用服务
我查看了这个链接,似乎“AuthenticationProcessingFilter”已被弃用,不适用于 Spring 3!
我也看过这个,但我不明白还需要什么其他步骤/配置。
spring-security: authorization without authentication
如果有人能概述一下我只需要通过授权实现 Spring Security 所需的所有项目,我将不胜感激。这就是我想出的。
1) 使用 spring 3 安全性更新 pom,添加一个过滤器(我应该选择哪个过滤器)
2) 自定义用户详细信息
3) 自定义 DaoAuthenticationProvider
4) 在 application-context.xml 中注册此自定义身份验证提供程序
5) 注册访问决策管理器以进行授权
【问题讨论】:
-
为什么不从智能卡中取出 CS 并将其传递给 Spring 以检查用户是否存在?
-
身份验证是通过第三方库完成的,该库检查公司 ldap 中的用户。其中“如果用户存在于特定于应用程序的数据库中,请再检查一次”是一项附加检查,不是强制性的。可以跳过。
-
智能卡和身份验证 Jar 如何通信?或者它是否可以在身份验证发生后可靠地将用户原则传递给网络服务器,例如通过 http 标头?
-
不涉及网络服务器。第三方身份验证库/jar 由公司的另一组提供。该库已添加到我的应用程序并部署到应用程序服务器。在访问应用程序的任何页面时,都会调用第三方的过滤器并调用第三方库中的验证码。然后,该库从通过 https 连接到桌面的读卡器中插入的智能卡中获取用户信息。一旦我登录(身份验证后)应用程序,我就会在请求对象中获得用户信息。
标签: java spring spring-security authorization