面向 SAP 网关的 azure APIM 客户端证书

问题描述

在 SAP S/4HANA 中调用 OData 服务时,我们尝试使用客户端证书进行身份验证。我们从一个 azure APIM 实例调用。作为证书,我们根据此博客 (https://blogs.sap.com/2020/05/03/x.509-certificate-based-logon-to-odata-services/) 创建了一个自签名证书并配置了 SAP S/4HANA 然后我们从浏览器中测试它就像一个魅力。 但是从 azure APIM 调用我们从 SAP S/4HANA 得到以下响应:

<?xml version="1.0" encoding="utf-8"?> <error xmlns:xsi="http://www.w3.org/2001/XMLSchema-Instance">
<code>HTTP/404/E/Not Found</code>
<message> Service /sap/opu/odata/sap/xxxxyyyy/xxyyzz call was terminated because the corresponding service is not available.The termination occurred in system UFI with error code 404 and for the reason Not found. Please select a valid URL. If it is a valid URL,check whether service /sap/opu/odata/sap/xxxxyyyy/xxyyzz is active in transaction SICF. If you do not yet have a user ID,contact your system administrator. </message>

SAP S/4HANA 支持说,然后从浏览器调用,他们可以“看到”有效载荷中的证书,但随后从 APIM 调用,有效载荷为“空”。

我从 SAP S/4HANA 网关服务器获得了跟踪日志,我注意到浏览器调用与 APIM 调用之间的微妙差异:

浏览器调用(成功): [Thr 140708195055360] HttpModGetDefRules:确定了缺陷:COPY_CERT_TO_MPI (1)

APIM 调用(失败): [Thr 140708197697280] HttpModGetDefRules:确定叛乱:NOTHING (0)

所以证书显然到达了 SAP S/4HANA 网关服务器,而不是 SAP S/4HANA Odata 服务器。所以不知何故,由于某种原因,它在 SAP S/4HANA 网关服务器上丢失了,然后它才来自 azure APIM。

我试图使调用 100% 相同(相同的标头相同的值),但我无法控制在 azure apim 中添加证书的方式,或者可以吗?

我读到可以使用以下策略设置证书主体:

<authentication-certificate body="@(context.Variables.GetValueOrDefault<byte[]>("byteCertificate"))" password="optional-certificate-password" />

但我不知道如何为“byteCertificate”获取正确的值。

有人做过吗?或者有人遇到过类似的问题吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...