使用j_security_check进行身份验证,但不授权(在Websphere中)

时间:2012-05-24 14:18:33

标签: java security java-ee websphere

有没有办法强制我的Java EE应用程序使用j_security_check进行身份验证,而不是授权?我想通过独立LDAP存储库进行身份验证,但我想在我的应用程序中进行编程授权。

具体来说,我不想在Websphere Application Server管理控制台中围绕授权(用户角色映射到组)进行任何配置。

例如:

  1. 用户使用'user1'和密码'password1'登录正确
  2. Websphere在LDAP中找到此人,知道他们是谁(身份验证)
  3. 我检查文件系统上的文件是否授权此用户(授权)

3 个答案:

答案 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可能会引起人们的兴趣。