保护对C4C的OData调用

2020-09-15 15:16发布

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

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


嘿社区,

tl; dr:如何将OData调用的范围限制为C4C?

当实现连接到身份提供者(IdP)的HTML5应用程序时,我偶然发现了身份验证问题,该身份提供者使用OData从SAP Cloud for Customer消费数据。 具体来说,我想知道如何限制访问范围。

这就是我要防止发生的事情:在设置目标并在应用程序中使用它时,从那里进行的所有JavaScript调用都可以访问所有 OData服务。 可以这么说,我的应用程序是关于管理票证的。 恶意用户(可以通过IdP访问我的应用程序,但我希望他毕竟可以访问票证)可以突然在浏览器的开发人员控制台中输入此恶意代码,并访问我的电话记录:

 $。ajax({
 网址:" https:///c4c/sap/c4c/odata/v1/c4codata/PhoneCallCollection",
 类型:" GET",
 成功:功能(d){console.log(d);  }
 })

有什么方法可以防止这种情况?

对于SOAP调用("网络服务"),可以设置某些通信系统,并将它们与所谓的通信场景配对(例如创建票证) )放入"通讯安排" 。 然后,这会创建一个具有用户/密码或证书身份验证的技术用户,其特权仅限于该安排中所述的非常用例。 它只能使用CreateTicket Web服务,不能使用其他任何服务。 OData是否也存在类似的东西?

现在,根据文档,一个人可以使用

向OData进行身份验证
    使用业务用户
  1. 基本身份验证(用户名/密码)
  2. OAuth 2.0身份验证-如我在UI中所见,这可以进行一些范围界定。 但是,我尚不清楚的是如何将这些范围缩小到某些工作中心,OData服务或OData实体。 是否有任何相关文档,或者有人可以向我解释如何实现与沟通安排类似的效果?

因此,我可以做的当然是使用我的IdP中的主体传播,但是为此,我的每个用户都需要一个C4C业务用户,该用户需要设置,维护和付费。 对于这个狭窄的用例,这让我感到吃力。

在研究过程中,我了解了SAP的合作伙伴渠道管理(PCM)以及它们如何在那里设置。 我看到,根据官方指示,它们也使用普通的OAuth。 我尝试了一下,发现,如果您问我,这会导致严重的安全问题,因为它为我上面概述的攻击打开了大门。 此屏幕快照显示了我如何使用PCM安装来访问本应用程序不希望访问的数据:

现在,我在这里想念什么? 有什么方法可以限制不使用商务用户的此类通话的范围?

非常感谢

帕特里克

(117.9 kB)

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

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


嘿社区,

tl; dr:如何将OData调用的范围限制为C4C?

当实现连接到身份提供者(IdP)的HTML5应用程序时,我偶然发现了身份验证问题,该身份提供者使用OData从SAP Cloud for Customer消费数据。 具体来说,我想知道如何限制访问范围。

这就是我要防止发生的事情:在设置目标并在应用程序中使用它时,从那里进行的所有JavaScript调用都可以访问所有 OData服务。 可以这么说,我的应用程序是关于管理票证的。 恶意用户(可以通过IdP访问我的应用程序,但我希望他毕竟可以访问票证)可以突然在浏览器的开发人员控制台中输入此恶意代码,并访问我的电话记录:

 $。ajax({
 网址:" https:///c4c/sap/c4c/odata/v1/c4codata/PhoneCallCollection",
 类型:" GET",
 成功:功能(d){console.log(d);  }
 })

有什么方法可以防止这种情况?

对于SOAP调用("网络服务"),可以设置某些通信系统,并将它们与所谓的通信场景配对(例如创建票证) )放入"通讯安排" 。 然后,这会创建一个具有用户/密码或证书身份验证的技术用户,其特权仅限于该安排中所述的非常用例。 它只能使用CreateTicket Web服务,不能使用其他任何服务。 OData是否也存在类似的东西?

现在,根据文档,一个人可以使用

向OData进行身份验证
    使用业务用户
  1. 基本身份验证(用户名/密码)
  2. OAuth 2.0身份验证-如我在UI中所见,这可以进行一些范围界定。 但是,我尚不清楚的是如何将这些范围缩小到某些工作中心,OData服务或OData实体。 是否有任何相关文档,或者有人可以向我解释如何实现与沟通安排类似的效果?

因此,我可以做的当然是使用我的IdP中的主体传播,但是为此,我的每个用户都需要一个C4C业务用户,该用户需要设置,维护和付费。 对于这个狭窄的用例,这让我感到吃力。

在研究过程中,我了解了SAP的合作伙伴渠道管理(PCM)以及它们如何在那里设置。 我看到,根据官方指示,它们也使用普通的OAuth。 我尝试了一下,发现,如果您问我,这会导致严重的安全问题,因为它为我上面概述的攻击打开了大门。 此屏幕快照显示了我如何使用PCM安装来访问本应用程序不希望访问的数据:

现在,我在这里想念什么? 有什么方法可以限制不使用商务用户的此类通话的范围?

非常感谢

帕特里克

(117.9 kB)
付费偷看设置
发送
2条回答
追夢秋陽
1楼-- · 2020-09-15 16:15

你好帕特里克

您为此解决了什么? 您是否使用过企业用户?

致谢
Stefan

亦是此间程序员
2楼-- · 2020-09-15 16:09

非常感谢您的快速回复。 :)

一周热门 更多>