【问题标题】:Preventing anonymous access to remote EJB access in WebLogic 12c在 WebLogic 12c 中防止匿名访问远程 EJB 访问
【发布时间】:2013-10-17 14:25:42
【问题描述】:

我在 WebLogic 12c 中部署了一个包含 EJB 的 WAR。我发现我可以从独立客户端访问 EJB,而无需在 InitialContext 中指定用户名/密码。有没有办法防止匿名访问 WAR 中的所有 EJB?

让我感到困惑的是,我需要提供正确的用户名/密码来进行身份验证(错误的密码将无法通过身份验证)。但是我可以省略用户名/密码(在我的 InitialContext 属性中),它可以让我访问 EJB。

所以我希望配置 Weblogic,使其始终需要用户名/密码才能访问任何 EJB。如果我省略了用户名/密码,它不应该让我访问我的 EJB。

我正在寻找对这种安全性的容器支持,而不是尝试自己实现一些东西。

【问题讨论】:

    标签: jakarta-ee weblogic12c


    【解决方案1】:

    您可以定义一个默认拦截器并在那里进行一些角色检查。

    拦截器是这样的:

    public class LoginCheckInterceptor {
      @Resource
      private EJBContext ejbContext;
    
      @AroundInvoke
      public Object checkLogin(final InvocationContext context) throws Exception {
        if (userAuthenticated()) {
          return context.proceed();
        } else {
          throw new SecurityException("User not authorized");        
        }
      }
    
      private boolean userAuthenticated() {
        // do role checking as needed
        // use this.ejbContext.isCallerInRole(...)
        // or this.ejbContext.getCallerPrincipal()
      }
    }
    

    要使其作为默认拦截器工作(适用于所有 EJB),请自定义部署描述符 ejb-jar.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <ejb-jar>
      <interceptors>
        <interceptor>
          <interceptor-class>your.package.LoginCheckInterceptor</interceptor-class>
        </interceptor>
      </interceptors>
      <assembly-descriptor>
        <interceptor-binding>
          <ejb-name>*</ejb-name>
          <interceptor-class>your.package.LoginCheckInterceptor</interceptor-class>
        </interceptor-binding>
      </assembly-descriptor>
    </ejb-jar>
    

    【讨论】:

    • 我应该澄清一下,我感到困惑的是我需要提供正确的用户名/密码来进行身份验证(错误的密码将无法通过身份验证)。但是我可以省略用户名/密码(在我的 InitialContext 属性中),它可以让我访问 EJB。因此,我希望配置 Weblogic,使其始终需要用户名/密码才能访问任何 EJB。 (将在我的问题中添加此说明)。
    • 恐怕没有标准的方法来做到这一点。据我所知,EJB 规范中对此一无所知。自然可能会有一些 Weblogic 扩展,但我对此无能为力。我提出的解决方案将保证你不能在没有经过身份验证的情况下调用任何 EJB 方法。
    猜你喜欢
    • 1970-01-01
    • 2012-11-20
    • 2012-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多