如何将安全主体从WebSphere传播到JBoss?

时间:2012-10-02 18:07:50

标签: java-ee websphere ejb-3.0 java-ee-6 jaas

我正在构建一个需要调用JBoss 4托管的远程EJB 3.0的应用程序,我需要将Principal从WebSphere传播到JBoss。我编写了一个自定义登录模块和一个自定义Principal,并在WebSphere中注册了它们。

从WAS环境中的任何层(Web或EJB层),我可以使用LoginModule恢复已经过身份验证的主体,因此从WebSphere我可以做到:

Principal principal = context.getCallerPrincipal(); String name = principal.getName(); ....

这将正确返回经过身份验证的主体和它的prorperties。

我也可以从WebSphere成功访问JBoss中托管的远程EJB,但在这种情况下的问题是,每当我尝试从JBoss中调用Principal时调用getCallerPrincipal(),JBoss容器都会出现异常:

[10/2/12 12:56:37:594 BRT] 0000007f BusinessExcep E   CNTR0020E: EJB threw an unexpected (non-declared) exception during invocation of method "remoteJBossEJBCall" on bean "BeanId(JBossRemoteEJBCall#ejbModule.jar#WAS_EJB, null)". Exception data: javax.ejb.EJBException: java.lang.IllegalStateException: No valid security context for the caller identity; nested exception is: java.lang.IllegalStateException: No valid security context for the caller identity

...

我已经将WebSphere Global Security设置为传播安全属性,但这也无法解决问题: WebSphere outbound security propagation

如果您有任何想法,请告诉我。我已经坚持了将近2天。

我已完成以下所有步骤:

http://pic.dhe.ibm.com/infocenter/wasinfo/v8r5/topic/com.ibm.websphere.nd.multiplatform.doc/ae/tsec_enablesecattprop.html

但仍然无效。

如果您需要,我可以向您发送代码和更多详细信息。

感谢。

0 个答案:

没有答案