点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嗨社区
我正在使用几个API,这些API借助API密钥进行身份验证,该API密钥用于检索用于后续API查询(SuccessFactors LMS OData和SAP LiveLink)的令牌。 我可以请求令牌并通过SAPUI5应用程序中的ajax请求和在Cloud Platform中配置的目标进行查询。
我担心的是,这些密钥目前存储在SAPUI5应用程序中,并在检索令牌时作为标头附加到ajax请求。 我不希望以这种方式存储它们,因为据我所知,无法从客户端隐藏此信息。
我一直在研究一些想法,但是找不到任何可行的信息或文档来支持这些想法。
1。 我想知道是否可以将API密钥添加到Cloud Platform Cockpit中的目标,以便每次在SAPUI5应用程序中使用目标时都将它们作为标头自动发送。
2。 可以将其存储在neo-app.json文件中吗? 由于可以限制对此文件的访问。
或者只有一种真正的选择,那就是拥有用于检索API令牌的服务器端解决方案? 我宁愿避免减少加载时间和架构依赖性。
我希望有人以前曾经遇到过这个问题,并且可以分享一个好的解决方案:)
您是在谈论仅在浏览器中运行的UI5应用程序吗? 然后,此密钥不应保留在那里。 我认为我在此处上找到的SF LMS OData API >更适合由中间件(即在SCP上运行并可以安全存储API密钥的Node.js oder Java应用程序)使用。
Hi Gregor,
是的,我们正在研究仅在浏览器中运行的UI5应用程序。
我希望密钥可以保留在应用程序使用的目标位置。 但是,如果这不可能,那么是的,我认为回退将是SCP上的Java应用程序,该应用程序可以为应用程序提供发出请求或原始数据的令牌。
嗨,亚当,
在SCP上开发SAPU5I应用程序时遇到了同样的问题。 您找到隐藏该API密钥的方法了吗? 也许使用目的地? 这些天,我一直在搜索很多东西,但没有找到任何可以帮助我的东西。
谢谢
杰拉德
嗨杰拉德,
我们最终创建了一个Java servlet来处理令牌的生成。
关于亚当
嗨亚当,
在manifest.json文件中输入数据就足够了吗?
这样做,您将在调用" mainService"时从HTML源(AJAX调用)隐藏APIKey。 SAPUI5框架将在运行时注入APIKey。 但是,如果您检查从服务器下载的资源,则仍然可以"看到" APIKey。 如果您尝试将其隐藏在目标属性下,将是相同的。
如果必须保护APIKey,那么将另一种类型的验证(例如IP地址,用户名等)与APIKey一起使用也许更有意义-只有您知道这种组合。 因此,即使有人发现了您的APIKey,该请求也不会起作用。
在请求的其他方面都无法满足的情况下,您可以调查OAuth而不是APIKey的用法。
以下是代码段:
关于,
伊凡
嗨,格雷格,
感谢您向我指出。 你是对的。 这不是保护API密钥的方法。
实际上,没有任何方法可以保护基于JavaScript的应用程序中的API密钥。
保护API密钥的唯一方法是将其隐藏在另一个服务器端服务下。 客户端呼叫将始终对公众"可见"。 因此,它们不得包含任何敏感信息,例如密码或密钥-我的回答中也明确指出了这一点。
我想提醒我,我的真正建议是用OAuth替换API密钥-OAuth使用与API不同的身份验证方法-用户将自己向API提供程序提供身份验证,一旦成功,应用程序将检索临时密钥 令牌。
关于,
伊凡
一周热门 更多>