有没有办法迫使我的Java EE应用程序使用j_security_check进行身份验证,而不是授权? 我想通过一个独立的LDAP存储库做认证,但我想这样做编程授权我的应用程序。
具体来说,我不想做的WebSphere Application Server管理控制台内各地授权任何配置(用户角色映射到组)。
例如:
- 用户登录与用户“user1”和密码“密码1”,这是正确的
- 的Websphere发现在LDAP这个人,知道他们是谁,他们说他们是(认证)
- 我从文件系统上的文件检查该用户是否有权限(授权)
我建议使用Spring Security进行此操作。 我们已经实施了WebSphere这个确切的模式。 诀窍是使用预认证机制,Spring Security提供,然后定义仅在配置授权规则。
<http>
<session-management session-fixation-protection="none"/>
<custom-filter position="PRE_AUTH_FILTER" ref="preAuthenticationFilter"/>
<intercept-url pattern="/j_security_check" filters="none"/>
<intercept-url pattern="/ibm_security_logout" filters="none"/>
<!-- put authorization intercept-url elements here... -->
</http>
你必须定义一些其他豆类为好,如预认证过滤器和一个自定义的切入点,但在这里记载: http://static.springsource.org/spring-security/site/docs/3.0.x/参考/ preauth.html
看看Spring Security的。 身份验证和授权的概念被分割。
认证由一个处理AuthenticationProvider
(一个LdapAuthenticationProvider
实现是弹簧的一部分)。 认证供应商代表来抓取用户,其中包括列表的细节GrantedAuthority
对象可以代表一个用户的权限。
LdapAuthenticationProvider
默认试图从目录授予的权限,所以你需要提供你自己的LdapAuthoritiesPopulator
从文件系统加载执行。
Java EE的安全性也可被拆分。 这取决于你的容器的实现然而。 既然你提到的WebSphere 这个文件可能会感兴趣。
文章来源: Using j_security_check for authentication, but not authorization (in Websphere)