1

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

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

例如:

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

3 回答 3

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/参考/preauth.html

于 2012-05-24T16:56:54.753 回答
1

看看 Spring 安全性。身份验证和授权的概念是分开的。

身份验证由一个AuthenticationProviderLdapAuthenticationProvider实现是spring的一部分)处理。身份验证提供者委托获取用户的详细信息,其中包括GrantedAuthority可以代表用户权限的对象列表。

LdapAuthenticationProvider默认情况下会尝试从目录中获得授权,因此您需要提供自己的LdapAuthoritiesPopulator实现,该实现从文件系统加载。

于 2012-05-24T16:22:49.607 回答
1

Java EE Security 也可以拆分。但是,这取决于您的容器的实现。既然你提到了 websphere ,这个文档可能会很有趣。

于 2012-05-24T16:33:10.570 回答