从javax.portlet.PortletSession访问javax.security.auth.Subject,jboss

时间:2015-12-16 05:59:55

标签: java jboss liferay portlet

有没有办法在liferay portlet的渲染阶段从javax.portlet.PortletSession访问javax.security.auth.Subject?

我定义了自定义登录模块,它扩展了com.liferay.portal.security.jaas.ext.jboss.PortalLoginModule。在其中,我可以访问Subject对象并可以在此处设置主体。现在我想在我的portlet中使用jboss中部署的相同应用程序访问这些主体。

我可以访问PortletSessionImpl支持的portletSession,我也可以访问HttpSession。此HttpSession包含主题和包含主体的进一步主题,但我没有找到任何api或方式来访问它。

任何提示线索都非常感激。感谢

1 个答案:

答案 0 :(得分:0)

找到了一种检索主题的方法。

import javax.security.auth.Subject;
import javax.security.jacc.PolicyContext;
import java.security.Principal;

Subject currentSubject = (Subject) PolicyContext.getContext("javax.security.auth.Subject.container");
for (Principal principal : currentSubject.getPrincipals()) {
// You have access to individual Principal
}

为我工作:)