点击此处---> 群内免费提供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进行身份验证-
使用业务用户
- 基本身份验证(用户名/密码)
- OAuth 2.0身份验证-如我在UI中所见,这可以进行一些范围界定。 但是,我尚不清楚的是如何将这些范围缩小到某些工作中心,OData服务或OData实体。 是否有任何相关文档,或者有人可以向我解释如何实现与沟通安排类似的效果?
因此,我可以做的当然是使用我的IdP中的主体传播,但是为此,我的每个用户都需要一个C4C业务用户,该用户需要设置,维护和付费。 对于这个狭窄的用例,这让我感到吃力。
在研究过程中,我了解了SAP的合作伙伴渠道管理(PCM)以及它们如何在那里设置。 我看到,根据官方指示,它们也使用普通的OAuth。 我尝试了一下,发现,如果您问我,这会导致严重的安全问题,因为它为我上面概述的攻击打开了大门。 此屏幕快照显示了我如何使用PCM安装来访问本应用程序不希望访问的数据:
现在,我在这里想念什么? 有什么方法可以限制不使用商务用户的此类通话的范围?
非常感谢
帕特里克
(117.9 kB)
你好帕特里克
您为此解决了什么? 您是否使用过企业用户?
致谢
Stefan
非常感谢您的快速回复。 :)
一周热门 更多>