从SAPUI5 App访问SuccessFactors LMS OData API

2020-09-19 08:56发布

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

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


大家好,

我正在使用在SCP上开发的SAPUI5应用程序,该应用程序需要访问LMS API才能从课程,用户等中检索数据。

我能够使用编码客户端密钥来恢复api调用所需的承载令牌,但问题是我现在将其存储在应用程序中,这是一个巨大的安全问题。

有人知道我如何保护此密钥免受外部观看者的侵害? 我尝试使用目的地,但没有找到方法。

如果可能的话,我想避免使用中间件来避免较大的加载时间和体系结构依赖性。

谢谢!

杰拉德

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

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


大家好,

我正在使用在SCP上开发的SAPUI5应用程序,该应用程序需要访问LMS API才能从课程,用户等中检索数据。

我能够使用编码客户端密钥来恢复api调用所需的承载令牌,但问题是我现在将其存储在应用程序中,这是一个巨大的安全问题。

有人知道我如何保护此密钥免受外部观看者的侵害? 我尝试使用目的地,但没有找到方法。

如果可能的话,我想避免使用中间件来避免较大的加载时间和体系结构依赖性。

谢谢!

杰拉德

付费偷看设置
发送
2条回答
骆驼绵羊
1楼-- · 2020-09-19 09:10

杰拉德

没有安全的方法来保护前端JavaScript UI上的API密钥。 唯一的解决方法是为API创建服务器端代理(您将在其中安全存储API密钥)。 服务器端代理可以创建为NodeJS,XSJS或Java应用程序。

将API密钥存储在JavaScript客户端不是最佳做法,因为任何人都可以看到它。 我会争论过度保护API密钥。 例如,想象一下,您的API将不仅具有API密钥,而且还将添加安全认证。 本质上,您说的是任何能够根据您的API进行身份验证的人都可以使用其功能-拥有完全授权! 然后,为什么要使用API​​密钥? 简单:您想监视和衡量API的使用情况,以便可以"收取"其数据流量的使用情况。 考虑到特定的用例,API密钥可以公开公开,因为您正在使用身份验证机制对其进行保护,并且因为您不关心用户对其的授权。

但是,在大多数用例(99.9%)上,出于明显的安全原因,您将需要保护API密钥。

我需要提到的是,使用SAP Cloud API Management,您还可以构建API代理来保护API密钥。 但是,如果这只是您感兴趣的事情,那就像"用大锤砸破螺母"。 使用API​​管理,您可以限制请求,混淆,更改,合并数据等。它是强大的工具,即使您的API不提供任何安全性,也可以为您提供强大的功能。

让我们不要忘记,SAP提供的大多数API都将用于集成方案(使用SCI-SAP Cloud Integration Services,以前称为HCI)或用于构建扩展(如今涉及到使用一台或多台服务器, 辅助技术)。

也许上述提到的API可以与OAuth2/JWT结合使用,以提供额外的安全性。 这样,您的用户将需要授权自己的数据以供您正在开发的应用程序访问,然后再调用API。 在这种情况下,每次都会使用一个临时令牌来调用该API。 为特定的API提供了OAuth2和JWT令牌的可用性(请查看每个与API相关的文档)。

此致

伊万

嗨杰拉德,

我在SAP API Hub中找不到任何支持没有API密钥的身份验证的API。 但是从技术上讲,无需使用API​​密钥即可拥有OAuth2。 这将高度依赖于API提供程序。 最常见的用法是API密钥,因为提供商希望实施消耗量测量(分析)并监视其API的使用情况,以便向您收费或更好地扩展其服务。

有关为什么API密钥不同于身份验证的更多信息。

阅读 OAuth2和JWT 也很有趣 在API中控制身份验证和授权的方法。

关于,
伊万

一周热门 更多>