安全的EJB3.1-Webservice(在JBoss Wildfly 8.2中)

时间:2016-06-29 07:44:34

标签: java web-services soap jboss ejb

我有一个近乎完成的Web项目,其中EJB3.1在Wildfly 8.2中部署为WAR。它由一个自编的JAAS领域和表单认证(auth-method FORM)保护。

现在我想添加一个基本定义为

的EJB-Webservice
@Stateless
@WebService
public class ProductImportWebservice {
    @Resource 
    WebServiceContext wsContext;

    [...]

    @WebMethod
    public Product createOrFind(String name) {
       [...]
    }
}

webservice按预期工作,但现在我遇到了我想通过用户名/密码保护对Webservice的访问的问题。 所以我用

注释了web服务或@WebMethod
@RolesAllowed("ADMIN")

是JAAS身份验证中的有效角色。 效果:SOAP-client获取“不允许/不认证的请求” - 但没有获得认证请求,并且忽略了使用BASIC认证的尝试。 如果我将webservice的URL添加到web.xml中的security-constraint我得到一个身份验证请求......但现在的问题是它是基于表单的身份验证 - 因为有浏览器的用户会期望它。这对于“普通”SOAP客户端是不可用的: - (

现在的具体问题是:是否有办法同时为应用程序的其余部分同时进行Web服务基于FORM的身份验证的BASIC身份验证?

我唯一能看到的另一种方法是将WAR包拆分为EAR包,并在不同的Web环境中部署Web服务。

1 个答案:

答案 0 :(得分:1)

  

现在的具体问题是:有没有办法同时拥有 - BASIC   Web服务的身份验证和基于FORM的身份验证   申请的其余部分?

您不能对同一个Web应用程序同时使用FORMBASIC身份验证。

如果您需要这样做,请使用共享代码库创建两个单独的应用程序。

参考:

https://docs.oracle.com/javaee/7/tutorial/security-webtier002.htm#JEETT01227

  

auth-method子元素为其配置身份验证机制   网络应用程序。元素内容必须是NONE,BASIC,   DIGEST,FORM或CLIENT-CERT。