点击此处---> 群内免费提供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进行这项工作的方法!
是否可以执行此操作?或者您是否有人对如何以访客用户身份访问其他密钥库有想法?
亲爱的巴斯蒂安,
该错误很可能向我显示以下内容:
正如我在您的自定义代码中看到的那样,您需要维护用户名和 密码:
<...> security.principal = <用户名> <...>命名.security.credentials = <密码> <...>
因此,您一定不要与Guest用户一起尝试该过程。 对您在上面的代码中维护的用户进行身份验证之后,可能会出现"用户来宾没有权限"错误。 身份验证失败(例如,安全会话过期)后,Java自动变为来宾用户,并且显然该用户将没有权限。
此外,我还能看到缺少的操作" IS_VIEW_EXISTS" 来宾用户身份验证错误的原因。 这也很明显,因为该用户没有这样的角色和动作。
因此,您可以执行以下操作:除了向Guest用户添加自定义角色(由于安全漏洞而不受支持)之外,您还需要查找为什么维护的用户(上文中提到) 代码)无法通过身份验证。 用户的安全会话可能已过期,然后成为来宾用户。
您可以按照SAP的说明通过打开TSHW"身份验证"跟踪来进行调查注意:1332726-故障排除向导->重现此问题- >关闭并下载跟踪->您可以根据时间戳和得到的错误进行调查。
最好的问候,
BarnabásPaksi
一周热门 更多>