点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家晚上好 我遇到有关SAP密...
点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家晚上好 我遇到有关SAP密...
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
大家晚上好
我遇到有关SAP密钥库和JNDI的问题。
首先,我们有一个与sap("独立")无关的Java应用程序,该应用程序试图访问SAP密钥库。
我们通过使用JNDI来实现
jndiContext =新的InitialContext(属性);
其属性如下:
java.naming.provider.url = <主机名>:,java.naming.factory.initial = com.sap.engine.services.jndi.InitialContextFactoryImpl,java.naming.security.principal = <用户名> ,java.naming.factory.url.pkgs = com.sap.engine.services,java.naming.security.credentials = <密码>,HTTPPORT = 50000
并获取KeystoreManager:
ksManager =(KeystoreManager)jndiContext.lookup(" keystore");
然后,我们尝试列出以下所有密钥库:
字符串keystoreAliases [] = ksManager.getKeystoreViewAliases();
这将返回一些密钥库,但不是系统上的每个密钥库。
如果我随后尝试明确访问未列出的密钥库之一,则会出现以下错误。
无法检索 别名的密钥库:java.rmi.RemoteException:com.sap.engine.services.keystore.exceptions.BaseRemoteException: 远程通话失败 。 。 。 造成原因: java.security.KeyStoreException:用户来宾没有权限 com.sap.engine.services.keystore.impl.security.KeystoreViewPermission与 参数名称keystore-view.view.CTCView 动作IS_VIEW_EXISTS 实例全部
然后我尝试寻找一种解决方案,该解决方案是如何在我在initialContext属性中指定的用户访问密钥库的,但是找不到任何东西。
我偶然发现的是以下代码片段:
managerPriviliged = com.sap.aii.af.service.resource.SAPSecurityResources.getInstance()。getKeyStoreManager(com.sap.aii.security.lib.PermissionMode.SYSTEM_LEVEL);
应该可以为我提供具有正确用户权限的keystoremanager。
问题是我找不到使用JNDI进行这项工作的方法!
是否可以执行此操作?或者您是否有人对如何以访客用户身份访问其他密钥库有想法?
很抱歉回到现在。
多亏了您的教程,我终于找到了我的错误。
我意识到,成功登录后不久,我的会话/用户就注销了,甚至在尝试访问任何密钥库之前。
因此,SAP系统似乎已默认返回给来宾用户。
我在代码中找不到任何显式的注销机制(应该完成所有操作后,连接已关闭)。
因此,通过反复试验,我发现,除了连接之外,还需要保持InitialContext Object在客户端保持打开状态。 否则,您的用户将立即注销。
在更改代码以在过程结束时关闭InitialContext以及它给我的连接后,一切正常!
一周热门 更多>