我正在构建一个Chrome扩展,它将与Salesforce-Chatter API进行交互。但是对于使用OAuth(用户代理程序流程)身份验证的用户,我需要将客户端密钥嵌入我的扩展名。

这会导致任何安全问题吗?或者有没有办法使用OAUTH,而无需将客户端ID嵌入我的扩展名?

有帮助吗?

解决方案

必须将客户端ID 包含在请求中,因此提供商知道该请求来自您,如@Matt Lacey已指出。通常,提供者还发布了保密的客户机密,它还包含在访问令牌请求中,因此提供程序可以验证您的应用程序是否允许使用该应用程序客户端ID

铬扩展在开放平台上运行,平台本身不提供对服务器的扩展(其中也必须支持的Salesforce也必须安全地存储)或者难以进行,但如果不是不可能的,则不可能在开放时难以验证平台),因此不幸的是,不可遗憾地保留客户秘密保密。

因为这是一个常见的问题,它已经在OAuth规范中考虑(参见第10.1节客户端身份验证 10.2客户端模拟)。因此,提供者需要进行额外检查,但在客户端,您无法有效地改善安全性。

如果您希望将来更有深入了解如何在Android设备上处理,请查看我的答案

其他提示

您必须在扩展中嵌入客户端ID,让Salesforce知道该应用程序的尝试验证。这些客户端ID旨在始终存储并传递给服务器,因此只要您以安全的方式将其存储在安全的方式中,就不应该有问题。

matt 解释说明如果您正在创建打包应用程序,则将被强制包含客户端ID。另一个解决方案是将应用程序写为托管应用程序:

打包的应用程序和托管应用程序之间有什么区别?

缺点是管理Web服务器的添加复杂性。但它将允许更大的安全性。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top