如何使用发布为@WebService
的会话Bean通过应用程序服务器域/安全域对HTTP Basic进行身份验证?
在Web项目中,可以使用web.xml
将角色映射到组,但我不知道如何在EJB-JAR项目中执行此操作。我不认为可以使用ejb-jar.xml
完成。
示例代码,在没有角色注释的情况下工作正常:
@Stateless
@WebService(portName="RestrictedServicePort")
@DeclareRoles(value = "Administrators")
public class RestrictedServiceBean {
@RolesAllowed(value = "Administrators")
public String restrictedOperation() {
return "Secret information";
}
}
错误:
<faultstring>[EJB:010160]Security Violation: User: '<anonymous>' has insufficient permission to access EJB: type=<ejb>
基本凭证标题:
Authorization: Basic d2VibG9naWM6d2VsY29tZTE=
我怀疑必须通过特定于供应商的配置来完成。我正在使用WebLogic 10.3.6,Java EE 5 / EJB 3.0。
答案 0 :(得分:1)
通过政策进行基本认证
来自v10 docs:
Web服务可以包含零个或多个与之关联的WS-Policy文件 它。 WS-Policy文件遵循WS-Policy的指导原则 规格。 WebLogic Server使用WS-Policy文件指定 消息级安全性的详细信息(数字签名和 加密)和Web服务的可靠消息传递功能。您 可以将WS-Policy文件附加到Web服务端点,这意味着 策略断言适用于Web的所有操作 服务端点。您还可以将WS-Policy文件附加到 操作,这意味着策略断言仅适用于 具体操作。此外,您可以附加WS-Policy文件 入站或出站SOAP消息,或两者兼而有之。
您的服务似乎可以attach a basic auth policy:
<sp:TransportToken>
<wsp:Policy>
<sp:HttpBasicAuthentication/>
</wsp:Policy>
</sp:TransportToken>
您可以通过管理控制台通过here概述的步骤应用此自定义政策,也可以考虑引用其中一个Oracle-preconfigured policies。
将角色映射到群组
WebLogic(v12)documentation在讨论EJB中@RolesAllowed
的使用时提到了以下内容:
如果在类或类的方法上使用@RolesAllowed注释,也可以使用注释显式声明隐式声明的角色。
使用管理控制台在WebLogic Server中创建安全角色。有关详细信息,请参阅&#34; Manage Security Roles&#34;在Oracle WebLogic Server管理控制台帮助中。
Manage Security Roles部分继续讨论scoped roles.
然后,您可以为包含高度敏感的业务逻辑的特定EJB创建范围角色。为EJB创建策略时,可以指定只有作用域角色可以访问EJB。
有关管理范围角色的更多信息是here。
答案 1 :(得分:0)
解决了添加角色映射的问题,因为它在任何Web模块中完成,但使用专有的 weblogic-ejb-jar.xml ,如下所示:
<wls:security-role-assignment>
<wls:role-name>Administrators</wls:role-name>
<wls:principal-name>myweblogicgroup</wls:principal-name>
</wls:security-role-assignment>
&#34; myweblogicgroup&#34;是在WebLogic安全领域中创建的组,系统用户用于对Web服务进行身份验证的组与之关联。
This link帮助了我。