1

我正在从 JBoss EAP 6.4 升级到 7.1,但我遇到了一些关于主题管理的技术问题。

一些上下文

我的应用程序是一个 EAR 文件,其中包含:

  • 一个网络模块
  • 几个带有无状态会话 bean (SLSB) 的 EJB 模块
  • 一个打包以上所有内容的EAR文件

身份验证是原始的:用户名-密码凭证被传递到 SLSB 之一,SLSB 依次调用

LoginContext loginContext = new LoginContext(group.getLoginContextName(), callbackHandler);
loginContext.login();

问题

我的应用程序偶尔会在不同的执行点检索主题——从我的 Web 应用程序、我的 EJB 或任何地方。我通常习惯使用Subject.getSubject(...),但这一直返回 null 。

我被要求使用PolicyContext.getContext("javax.security.auth.Subject.container")它,它确实返回了经过身份验证的主题,但只在loginContext.login();被调用的地方。当我从其他任何地方(包括从同类型的不同 SLSB 实例)调用它的那一刻,主题为空!

我错过了什么??

4

0 回答 0