EJB 之间的信任
Trust between EJBs
我有一堆使用声明式安全性的 EJB,我需要让一个 EJB 信任另一个 EJB。
例如
class ServiceOne {
@EJB
private ServiceTwo service;
@RolesAllowed("role1")
public void doSomething() {
// do several things here...
service.giveMeInfo();
}
}
class ServiceTwo {
@Resource
private SessionContext ejbCtx;
@RolesAllowed("role2")
public String giveMeInfo() {
System.out.println("OK user " + ctx.getCallerPrincipal());
return str;
}
}
调用serviceOne.doSomething()的用户只有"role1",他没有调用giveMeInfo()所需的"role2",但我想让他调用这个方法无论如何,因为它来自 ServiceOne(这是允许的)。
如果我使用基于@RunAs 的策略,我会丢失有关真实用户的信息,因为 getCallerPrincipal() 只会给我指定匿名主体的角色,但我需要保留原始调用者信息。
(ps: 我正在使用 JBOSS eap 6。)
提前致谢。
您可以在@RolesAllowed 中声明多个角色:
class ServiceTwo {
@Resource
private SessionContext ejbCtx;
@RolesAllowed({"role1", "role2"})
public String giveMeInfo() {
System.out.println("OK user " + ctx.getCallerPrincipal());
return str;
}
}
我有一堆使用声明式安全性的 EJB,我需要让一个 EJB 信任另一个 EJB。
例如
class ServiceOne {
@EJB
private ServiceTwo service;
@RolesAllowed("role1")
public void doSomething() {
// do several things here...
service.giveMeInfo();
}
}
class ServiceTwo {
@Resource
private SessionContext ejbCtx;
@RolesAllowed("role2")
public String giveMeInfo() {
System.out.println("OK user " + ctx.getCallerPrincipal());
return str;
}
}
调用serviceOne.doSomething()的用户只有"role1",他没有调用giveMeInfo()所需的"role2",但我想让他调用这个方法无论如何,因为它来自 ServiceOne(这是允许的)。
如果我使用基于@RunAs 的策略,我会丢失有关真实用户的信息,因为 getCallerPrincipal() 只会给我指定匿名主体的角色,但我需要保留原始调用者信息。
(ps: 我正在使用 JBOSS eap 6。)
提前致谢。
您可以在@RolesAllowed 中声明多个角色:
class ServiceTwo {
@Resource
private SessionContext ejbCtx;
@RolesAllowed({"role1", "role2"})
public String giveMeInfo() {
System.out.println("OK user " + ctx.getCallerPrincipal());
return str;
}
}