7

我正在构建一个 chrome 扩展,它将与 salesforce-chatter api 交互。但是对于使用 oAuth(用户代理流)身份验证的用户,我需要将我的客户端密钥嵌入到我的扩展中。

这会导致任何安全问题吗?或者有没有办法使用 oAuth 而不在我的扩展中嵌入客户端 ID?

4

3 回答 3

6

客户端 ID必须包含在请求中,因此提供者知道请求来自您,正如@Matt Lacey 已经指出的那样。通常,提供者还会发布一个机密的客户端密钥,该密钥另外包含在访问令牌请求中,因此提供者可以验证您的应用是否被允许使用该客户端 id

Chrome 扩展程序在开放平台上运行,并且平台本身没有提供针对服务器验证扩展程序(销售人员也必须支持)或安全存储属性(如果在开放平台上不是不可能的话,这将是困难的)的方法,因此,不幸的是,对客户的秘密保密是不可能的。

由于这是一个常见问题,它已经在 OAuth 规范中考虑(请参阅第 10.1 节客户端身份验证10.2 客户端模拟)。因此,提供商需要进行额外的检查,但在客户端,您无法做任何事情来有效提高安全性。

如果您想更深入地了解将来如何在 Android 设备上处理此问题,请在此处查看我的答案。

于 2012-08-06T13:48:41.047 回答
2

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

于 2012-07-30T02:40:32.333 回答
0

正如马特解释的那样,如果您正在创建一个打包的应用程序,您将被迫包含客户端 ID。另一种解决方案是将应用程序编写为托管应用程序:

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

这样做的缺点是增加了管理 Web 服务器的复杂性。但这将允许更大的安全性。

于 2012-08-01T07:41:21.300 回答