无法通过RFC SNC向ABAP系统进行主体传播

2020-09-20 04:46发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)你好社区, 我试图在Java应...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好社区,

我试图在Java应用程序(Tomcat 8运行时)中调用RFC SNC目标,并收到以下错误:

 com.sap.conn.jco.JCoException:(103)JCO_ERROR_LOGON_FAILURE:初始化目标dt1_datatrain_snc失​​败:Anmeldedatenunvollständig。

我按照官方文档的所有步骤在AS ABAP和Cloud Connector上配置SNC:

https://help.sap .com/viewer/cca91383641e40ffbe03bdc78f00f681/Cloud/en-US/c84d4d0b12d34890b334998185f49e88.html

我的目的地如下:

我的用户映射如下:

我的JAVA代码如下:

 JCoDestination destination = JCoDestinationManager.getDestination(" dt1_datatrain_snc");
 JCoRepository repo = destination.getRepository();
 JCoFunction stfcConnection = repo.getFunction(" STFC_CONNECTION");
 JCoParameterList import = stfcConnection.getImportParameterList();
 imports.setValue(" REQUTEXT"," SAP HANA Cloud连接与JCo一起运行");
  stfcConnection.execute(destination); 

我不知道这里出了什么问题?

预先感谢您的帮助,

克里斯托弗·福斯

(27.3 kB)
付费偷看设置
发送
11条回答
追夢秋陽
1楼-- · 2020-09-20 05:35

克里斯托弗,你好

如果jco.client.principal_name为null,则意味着在安全会话上下文中找不到用户。 JCo从SAP CP会话中获取此值。 auth_type为CURRENT_USER是由于某种技术原因引起的,并且在目标中设置PrincipalPropagation时实际上是正确的。 您的应用程序确实受到某种身份验证的保护吗?

最好的问候,
马库斯

灬番茄
2楼-- · 2020-09-20 05:16

马库斯,您好

认证挑战是什么意思? 当我启动我的应用程序时,我被重定向到我的IDP,并在登录后在我的Java应用程序中获得用户ID" P000001",然后将其设置为我的RFC Destination作为用户ID。 这工作正常,但问题是没有映射到我的SAP用户。 在事务EXTID_DN中,我定义了我的外部用户" P000001"应使用SAP用户CFUSS,但这不起作用。 缺少什么?

预先感谢

Doze时光
3楼-- · 2020-09-20 05:12

更新云连接器后,问题已解决。

亦是此间程序员
4楼-- · 2020-09-20 05:28

我的配置适用于HTTPS,但不适用于RFC SNC。

蓋茨
5楼-- · 2020-09-20 05:12

她是Cloud Cockpit中日志文件中的错误代码吗?

 2017 07 19 15:21:15#+ 00#WARN#com.sap.conn.jco ## anonymous#https-jsse-nio-8041-exec-5#na#a71f9a2af#jcodev#web#a71f9a2af#  [JCoAPI] JCoClient.connect {jco.destination.repository.snc_mode = 0,jco.client.sysnr = 10,jco.client.destination = dt1_datatrain_snc,jco.destination.one_roundtrip_repository = 1,jco.client.type = a,名称 = dt1_datatrain_snc,jco.destination.user_id = CFUSS,jco.client.lang = DE,jco.destination.userid = P000001,Type = RFC,jco.client.trace = 1,jco.destination.auth_type = CURRENT_USER,propertiesProvider =目的地 对于当前用户配置,jco.destination.pool_capacity = 5,jco.client.client = 100,jco.destination.repository.user = CFUSS,jco.destination.repository.passwd = * secret *,jco.client.ashost =  dt1.datatrain.snc,jco.client.principal_name = null}失败,并出现com.sap.conn.jco.JCoException:(103)JCO_ERROR_LOGON_FAILURE:取消提示。

我不明白的是,为什么auth_type设置为CURRENT_USER? 在我的目的地将其设置为PrincipalPropagation,请参见上面的屏幕截图。

为什么jco.client.principal_name为null ??

预先感谢

SAP小黑
6楼-- · 2020-09-20 05:21

嗨马库斯,j

非常感谢您的帮助。

我的JAVA应用程序是通过loginContext进行保护的。

我们正在从"自定义SAP身份管理租户"中获取身份验证(启用了主体传播)。

用户P000001已传播到我的JAVA应用程序中,并设置为jco.client.user(请参见上面的scrennshot)

您在这里看到任何薄雾吗?

字符串用户= request.getRemoteUser();
                //验证用户身份
                 如果(用户!= null){
                     responseWriter.println("用户已经在那里" +用户);
                 }
                 其他{
                  //验证用户身份
                   LoginContext loginContext;
                   尝试{
                     loginContext = LoginContextFactory.createLoginContext(" FORM");
                     loginContext.login();
                    //更新用户
                     用户= request.getRemoteUser();
                   } catch(LoginException e){
                       responseWriter.println("身份验证失败");
                   }
                 }
                //访问RFC目标" JCoDemoSystem"
                 JCoDestination destination = JCoDestinationManager.getDestination(" dt1_datatrain_snc");
                 JCoRepository repo = destination.getRepository();
                 JCoFunction stfcConnection = repo.getFunction(" STFC_CONNECTION");

                 JCoParameterList import = stfcConnection.getImportParameterList();
                 imports.setValue(" REQUTEXT"," SAP HANA Cloud连接与JCo一起运行");
                 stfcConnection.execute(destination); 

一周热门 更多>