有没有办法强制我的Java EE应用程序使用j_security_check进行身份验证,而不是授权?我想通过独立LDAP存储库进行身份验证,但我想在我的应用程序中进行编程授权。
具体来说,我不想在Websphere Application Server管理控制台中围绕授权(用户角色映射到组)进行任何配置。
例如:
答案 0 :(得分:3)
我建议使用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>
您还必须定义其他一些bean,例如预先验证过滤器和自定义入口点,但这里记录了:http://static.springsource.org/spring-security/site/docs/3.0.x/reference/preauth.html
答案 1 :(得分:1)
看一下Spring Security。身份验证和授权的概念是分开的。
身份验证由AuthenticationProvider
处理(LdapAuthenticationProvider
实施是春天的一部分)。身份验证提供程序委托获取用户的详细信息,其中包括可表示用户权限的GrantedAuthority
个对象列表。
LdapAuthenticationProvider
会尝试从目录中获取授予的权限,因此您需要提供从文件系统加载的自己的LdapAuthoritiesPopulator
实现。
答案 2 :(得分:1)
Java EE Security也可以拆分。这取决于您的容器的实现。 既然你提到了websphere this document可能会引起人们的兴趣。