Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oauth 在chrome扩展中嵌入客户端Id_Oauth_Google Chrome Extension_Salesforce_Oauth 2.0_Salesforce Chatter - Fatal编程技术网

Oauth 在chrome扩展中嵌入客户端Id

Oauth 在chrome扩展中嵌入客户端Id,oauth,google-chrome-extension,salesforce,oauth-2.0,salesforce-chatter,Oauth,Google Chrome Extension,Salesforce,Oauth 2.0,Salesforce Chatter,我正在构建一个chrome扩展,它将与salesforce chatter api交互。但是对于使用oAuth(用户代理流)身份验证的用户,我需要将客户机密钥嵌入到扩展中 这会导致安全问题吗?或者有没有一种方法可以使用oAuth而不在我的扩展中嵌入客户端id?您必须在扩展中嵌入客户端id,以便让Salesforce知道尝试进行身份验证的应用程序是什么。这些客户端id将始终存储并传递给服务器,因此只要您以安全的方式存储,就不会出现问题。如前所述,如果您正在创建打包的应用程序,您将被迫包含客户端id

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


这会导致安全问题吗?或者有没有一种方法可以使用oAuth而不在我的扩展中嵌入客户端id?

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

如前所述,如果您正在创建打包的应用程序,您将被迫包含客户端id。另一种解决方案是将该应用程序作为托管应用程序编写:

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

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

Chrome扩展在开放平台上运行,平台本身没有提供针对服务器(salesforce也必须支持)验证扩展或安全存储属性的方法(在开放平台上很难,如果不是不可能的话),因此,为客户保密是不可能的

由于这是一个常见的问题,OAuth规范中已经考虑了它(请参阅和)。因此,提供者需要做额外的检查,但在客户端,您无法做任何事情来有效地提高安全性


如果你想更深入地了解未来Android设备将如何处理这一问题,请查看我的答案

“以安全的方式存储”是什么意思?你有什么办法吗?我的分机将公开。如果一个黑客只是复制了我的扩展,让用户安装它而不是我的扩展,那会怎样呢?然后你将如何向web服务器验证chrome扩展?这只是将问题从
客户机Salesforce
转移到
客户机服务器
。你不会!不要通过客户端运行任何代码。托管应用实际上是chrome应用商店包装中的网络应用。啊,抱歉@Daniel,误解了你的答案:/