为什么Glassfish会生成一个不完整的grated.policy文件?
版本:GlassFish服务器3.1.2.2(构建5) 我有一个为什么Glassfish会生成一个不完整的grated.policy文件?,glassfish,ejb,security-policy,Glassfish,Ejb,Security Policy,版本:GlassFish服务器3.1.2.2(构建5) 我有一个EAR项目,其中包含一个WAR和一个EAR 在EAR的META-INF文件夹中,我有一个sun application.xml文件,它将角色选择映射到组 在Glassfish的默认文件域中,我配置了映射到这些组的用户 我没有使用默认角色映射,也没有激活安全管理器 访问非常有效。通过删除部署描述符进一步证明了这一点,当尝试在没有部署描述符的情况下登录时,会导致授权异常 然而,当尝试访问我的ejb的一个看似随机(但一致)的选择时,我对臭
EAR
项目,其中包含一个WAR
和一个EAR
在EAR的META-INF
文件夹中,我有一个sun application.xml
文件,它将角色选择映射到组
在Glassfish
的默认文件域中,我配置了映射到这些组的用户
我没有使用默认角色映射,也没有激活安全管理器
访问非常有效。通过删除部署描述符进一步证明了这一点,当尝试在没有部署描述符的情况下登录时,会导致授权异常
然而,当尝试访问我的ejb的一个看似随机(但一致)的选择时,我对臭名昭著的Glassfish“javax.ejb.AccessLocalException:客户机未被授权进行此调用”异常感到厌烦
我知道,但这不起作用
当我查看EJB的策略文件时,我立即注意到受影响的EJB授权丢失了
似乎缺少sun-application.xml文件中定义的每个组一个或两个角色
为什么Glassfish无法从(经验证的)工作sun application.xml和(经验证的)一组@roles允许的定义生成完整的策略文件
以下是部署描述符:
<!DOCTYPE sun-application PUBLIC "-//Sun Microsystems, Inc.//DTD
GlassFish Application Server 3.0 Java EE Application 6.0//EN"
"http://www.sun.com/software/appserver/dtds/sun-application_6_0-0.dtd">
<sun-application>
<security-role-mapping>
<role-name>ViewAllData</role-name>
<role-name>BasicUser</role-name>
<group-name>BasicGroup</group-name>
</security-role-mapping>
<security-role-mapping>
<role-name>DataSupervisor</role-name>
<group-name>DatasetSupervisors</group-name>
</security-role-mapping>
<security-role-mapping>
<role-name>FindData</role-name>
<role-name>FindSubData</role-name>
<group-name>DatasetUsers</group-name>
</security-role-mapping>
<security-role-mapping>
<role-name>ManageData</role-name>
<role-name>ManageSubData</role-name>
<role-name>InvokeDataload</role-name>
<group-name>DatasetManagers</group-name>
</security-role-mapping>
<security-role-mapping>
<role-name>ResolveGroup1</role-name>
<role-name>ResolveGroup2</role-name>
<role-name>ResolveGroup3</role-name>
<group-name>Decoders</group-name>
</security-role-mapping>
</sun-application>
除非有人能告诉我其他情况,否则我出现问题的原因似乎是因为每个
只能使用一个
@RolesAllowed({"ResolveGroup1"})
@Stateless(mappedName = "ejb/FindGroupOneController")
@Local(FindRegistrationFragmentController.class)
@Interceptors(SpringBeanAutowiringInterceptor.class)
public class FindGroupOneControllerImpl implements FindGroupOneController{
@RolesAllowed({"ViewAllData"})
@Stateless(mappedName = "ejb/ViewDataController")
@Local(FindRegistrationFragmentController.class)
@Interceptors(SpringBeanAutowiringInterceptor.class)
public class ViewDataControllerImpl implements ViewDataController{