Glassfish v3中的IIOP客户端身份验证和ProgrammaticLogin

时间:2010-08-19 07:38:17

标签: java glassfish corba

在Glassfish v2中,我通过在ORB节点下的管理控制台中启用“IIOP客户端身份验证”复选框来保护我的JNDI查找。

在我的独立客户端中,我执行“ProgrammaticLogin”,然后允许我进行JNDI查找。

但是在Glassfish v3中,如果想在同一设置中进行任何JNDI查找,我会收到此错误:

18.08.2010 14:31:10 com.sun.enterprise.transaction.JavaEETransactionManagerSimplified
initDelegates INFO: Using
com.sun.enterprise.transaction.jts.JavaEETransactionManagerJTSDelegate
as the delegate
org.omg.CORBA.NO_PERMISSION:
----------BEGIN server-side stack trace----------
org.omg.CORBA.NO_PERMISSION: 
vmcid: 0x0 
minor code: 0 
completed: No 

我很确定“ProgrammaticLogin”一般都可以工作,因为它允许我在我的安全EJB上进行远程方法调用(使用@RolesAllowed但是如果IIOP客户端身份验证已关闭)。

我登录的用户是我为“文件”域创建的简单用户。

任何想法,为什么ProgrammticLogin无法在Glassfish v3中用于授权JNDI查找?

或者从独立客户端使用ORB进行身份验证的正确方法是什么?为了这个目的?

1 个答案:

答案 0 :(得分:1)

您确定appserv-rt.jar在您的类路径上吗?它是每个glassfish3安装的一部分,例如在我的安装它位于:

/opt/glassfish3/glassfish/lib

这非常重要。它包含一些客户端java类,尤其是:AppclientIIOPInterceptorFactory。

这些将SecClientRequestInterceptor添加到ORB,它关心用户名和密码被添加到发送到服务器的GIOP请求中。

我花了大约两天的时间扫描玻璃鱼的源代码并用wirehark嗅探电线上的corba包,直到我发现它为止。

可以在此处找到如何保护bean并编写真正的Java EE客户端的示例: http://download.oracle.com/docs/cd/E19798-01/821-1841/bnbzk/index.html

希望这会有所帮助     曼努埃尔

相关问题