将 SCP 云用户信息安全地传输到 ABAP
Transfer SCP Cloud User Information securely to ABAP
我有一个 UI5 应用程序托管在 SAP NEO 上,它通过 ABAP OData 服务检索数据。
用户在 SAP Cloud Identity 中维护并映射到他们的后端用户,并且登录是通过主体传播设置的。这是所有设置和工作。
我被要求更改应用程序以允许没有 SAP 后端用户的外部销售代表使用该应用程序。
想法是使用一个 "technical user" 与基本身份验证而不是主体传播。
我的问题是在 ABAP 中识别原始云用户名的方法是什么(因为 sy-uname 将是技术用户)。
在ABAP中调试没有泄露原始信息,恐怕原始用户甚至没有传递给网关
SAP Cloud 用户 API (https://help.sap.com/viewer/65de2977205c403bbc107264b8eccf4b/Cloud/en-US/1de599bf722446849d2b2e10132df42a.html) 不是一个选项,因为可以在浏览器中操纵请求
我听说使用 Java Servlet 的另一个选项。但恐怕这意味着我们必须在那里重新设置整个 OData 服务,并且随着网关的每次更改,我们也必须调整 Java Servlet,或者可能有代理。
如果您使用的是 SAP Cloud Platform 的移动服务,您可以激活一个 header 并使用要传输到您的 ABAP 系统的用户名。它被称为X-SMP-ENDUSERNAME。
我假设您可以在您的 UI5 应用程序中获取云用户 ID,如果您通过 Odata 模型访问后端,您可以使用 ODataModel.setHeaders 函数来提供您的自定义请求 headers,它将被附加发送到后端的每个请求。我会尝试以某些自定义 header 值发送云用户 ID。
并且在 ABAP 端,您可以在服务实现中使用 DP 外观接口来读取自定义 headers:
lo_facade ?= /iwbep/if_mgw_conv_srv_runtime~get_dp_facade( ).
lt_client_headers = lo_facade->get_request_header( ).
我有一个 UI5 应用程序托管在 SAP NEO 上,它通过 ABAP OData 服务检索数据。
用户在 SAP Cloud Identity 中维护并映射到他们的后端用户,并且登录是通过主体传播设置的。这是所有设置和工作。
我被要求更改应用程序以允许没有 SAP 后端用户的外部销售代表使用该应用程序。
想法是使用一个 "technical user" 与基本身份验证而不是主体传播。
我的问题是在 ABAP 中识别原始云用户名的方法是什么(因为 sy-uname 将是技术用户)。
在ABAP中调试没有泄露原始信息,恐怕原始用户甚至没有传递给网关
SAP Cloud 用户 API (https://help.sap.com/viewer/65de2977205c403bbc107264b8eccf4b/Cloud/en-US/1de599bf722446849d2b2e10132df42a.html) 不是一个选项,因为可以在浏览器中操纵请求
我听说使用 Java Servlet 的另一个选项。但恐怕这意味着我们必须在那里重新设置整个 OData 服务,并且随着网关的每次更改,我们也必须调整 Java Servlet,或者可能有代理。
如果您使用的是 SAP Cloud Platform 的移动服务,您可以激活一个 header 并使用要传输到您的 ABAP 系统的用户名。它被称为X-SMP-ENDUSERNAME。
我假设您可以在您的 UI5 应用程序中获取云用户 ID,如果您通过 Odata 模型访问后端,您可以使用 ODataModel.setHeaders 函数来提供您的自定义请求 headers,它将被附加发送到后端的每个请求。我会尝试以某些自定义 header 值发送云用户 ID。
并且在 ABAP 端,您可以在服务实现中使用 DP 外观接口来读取自定义 headers:
lo_facade ?= /iwbep/if_mgw_conv_srv_runtime~get_dp_facade( ).
lt_client_headers = lo_facade->get_request_header( ).