我有一个近乎完成的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服务。
答案 0 :(得分:1)
现在的具体问题是:有没有办法同时拥有 - BASIC Web服务的身份验证和基于FORM的身份验证 申请的其余部分?
您不能对同一个Web应用程序同时使用FORM
和BASIC
身份验证。
如果您需要这样做,请使用共享代码库创建两个单独的应用程序。
参考:
https://docs.oracle.com/javaee/7/tutorial/security-webtier002.htm#JEETT01227
auth-method子元素为其配置身份验证机制 网络应用程序。元素内容必须是NONE,BASIC, DIGEST,FORM或CLIENT-CERT。