我有一个即将完成的web项目,EJB3.1作为WAR部署在Wildfli8.2中。它由一个带有表单身份验证(auth-method FORM)的自写JAAS-领域来保护。
现在,我想添加一个EJB-Webservice,它基本上被定义为
@Stateless
@WebService
public class ProductImportWebservice {
@Resource
WebServiceContext wsContext;
[...]
@WebMethod
public Product createOrFind(String name) {
[...]
}
}webservice如预期的那样工作,但现在我遇到了问题,我想通过用户名/密码来保护对Webservice的访问。因此,我注释了webservice或@WebMethod
@RolesAllowed("ADMIN")这是JAAS-身份验证中的一个有效角色。效果: SOAP-client获得answere "reqeust不允许/未验证“-但没有身份验证-请求和尝试与基本身份验证被忽略。如果我将webservice的URL添加到web.xml中的安全约束中,就会得到一个身份验证请求.但现在的问题是,这是基于表单的认证--这是一个拥有浏览器的用户所期望的。这对于“普通”SOAP客户端来说是不可用的:-(
现在的具体问题是:是否有一种方法既可以对webservice进行基本身份验证,也可以为应用程序的其余部分提供基于表单的身份验证?
我看到的唯一其他方法是将WAR包拆分成一个EAR包,并在不同的web上下文中部署webservice。
发布于 2016-06-29 07:58:24
现在的具体问题是:是否有一种方法既可以对webservice进行基本身份验证,也可以为应用程序的其余部分提供基于表单的身份验证?
对于同一个web应用程序,不能同时使用FORM和BASIC身份验证。
如果需要这样做,请使用共享代码库创建两个单独的应用程序。
参考资料:
https://docs.oracle.com/javaee/7/tutorial/security-webtier002.htm#JEETT01227
auth-method子元素配置web应用程序的身份验证机制。元素内容必须是“无”、“基本”、“摘要”、“形式”或“客户端-CERT”。
https://stackoverflow.com/questions/38093339
复制相似问题