当前位置:  开发笔记 > 编程语言 > 正文

如何在代码中的任意点访问JAAS角色?

如何解决《如何在代码中的任意点访问JAAS角色?》经验,为你挑选了1个好方法。

我想在我的SOAP应用程序中访问其角色的完整用户模型.例如,我可能想知道名为"Fred"的用户的角色.

我如何进入某种全局JAAS注册表并执行(伪代码) globalRegistry.getUser("Fred").getPrincipals()?(请注意,在JAAS中,角色由Principal表示.)

我知道如何获得校长的的 主题LoginContext的,但有两个问题.

    它只是在登录时,我不想编写上述注册表并自己存储SubjectPrincipal对象,因为它们已经由appserver存储.

    优选地,即使Fred不是当前用户,我也希望能够访问该信息.

我正在使用Jetty,但我认为这些行为是JAAS的标准.



1> Tom Anderson..:

我见过的模式是:

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

从本质上讲,它会找到当前与当前线程关联的主题,并询问其主体.

使用它的一个例子是Apache Jackrabbit的RepositoryImpl.它位于该extendAuthentication方法中,其工作是确定当前线程在创建新会话时具有的Jackrabbit权限(我认为).

但是,我应该注意到,这可能不一定有效,至少在J2EE上下文中是这样.我在JBoss AS7下使用这个代码,它没有找到主题.但这可能只是一个错误.

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有