FUSE (または Karaf) では、発信者のユーザー ID をどのように取得しますか? 私は実際にブループリント サービスで FUSE を使用しています。
たとえば、J2EE セッション Bean では、次のことができます。
sessionCtx.getCallerPrincipal()
OSGIサービススペースに同等のものはありますか?
Karaf では、単純な jaas を使用してサービス認証を行います。したがって、次のコードを使用してサブジェクトとプリンシパルにアクセスできます。
AccessControlContext acc = AccessController.getContext();
Subject subject = Subject.getSubject(acc);
Set<Principal> principals = subject.getPrincipals();
karaf 3 には、OSGi サービス用の役割ベースのアクセス制御も組み込まれています。したがって、どのロールがどのサービスにアクセスできるかを定義できます。