我正在从JBoss EAP 6.4升级到7.1,但我遇到了一些关于主题管理的技术问题。
我的应用程序是一个包含以下内容的EAR文件:
身份验证是原始的:用户名 - 密码凭据会传递给其中一个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实例)调用它的那一刻,主题为空!
我错过了什么?