0

In FUSE (or Karaf), how does one get the caller user id? I'm actually using FUSE with blueprint services.

For example, in a J2EE session bean, you can do:

sessionCtx.getCallerPrincipal()

Is there an equivalent in the OSGI service space?

4

1 回答 1

1

在 Karaf 中,我们使用普通的 jaas 来进行服务认证。因此,您可以使用以下代码访问主题和主体。

AccessControlContext acc = AccessController.getContext();
Subject subject = Subject.getSubject(acc);
Set<Principal> principals = subject.getPrincipals();

在 karaf 3 中,还为 OSGi 服务内置了基于角色的访问控制。因此,您可以定义哪些角色可以访问哪些服务。

于 2014-01-08T06:52:11.837 回答