我想为我的非营利组织创建一个面向公众的react本地应用程序(通过Salesforce和Google下载),该应用程序根据存储在Salesforce数据库(使用NPSP)的捐赠历史显示一张数字会员卡。
我的基本想法是让用户使用某种类型的无密码身份验证方案进行身份验证(react-native-lock
,本地移动应用程序还有其他什么吗?)然后使用经过身份验证的用户名和电子邮件作为对Salesforce的REST的API调用中的查询参数。我想要么在创建/注册Salesforce“连接的应用程序”时硬编码消费者密钥和消费者秘密,要么硬编码消费者密钥,然后从Heroku应用/服务器中丰富API调用,然后将API调用转发给Salesforce。在没有增加安全性的情况下,丰富代理API服务器是否过度使用?
我在想,我会创建一个具有只读权限的Salesforce用户,我猜该用户的凭据也会被硬编码到应用程序中?并且,经过硬编码认证的Salesforce只读用户可以使用应用程序的用户名和电子邮件作为查询参数进行API调用,以检索捐赠信息以确定成员资格。对我来说这听起来很疯狂,但我想不出别的办法了。
我担心的是,通过构建这个应用程序,我将以一种难以正确安全的方式公开我们的数据库。对于本地应用程序体系结构来说,这是一个糟糕的想法吗?否则,我如何实现我的目标,向会员提供一个数字会员卡在一个本机应用程序-反应-原生,无密码认证和销售?我不认为我们想为每个捐赠者创建Salesforce用户。对我来说也不对。
发布于 2016-10-04 09:39:10
在本地移动应用程序、浏览器应用程序或在客户端上运行代码的任何其他应用程序中硬编码的任何类型的机密和/或凭据都不再被视为机密。
您指出了我还建议的内容,您应该有某种服务器端组件,其中API密钥和/或硬编码凭据的存储可以被认为是安全的。
服务器端组件将与系统的敏感部分(Salesforce)进行所有通信,确保它是由经过身份验证的用户调用的,在您的示例中,该用户只是一个已经通过无密码身份验证步骤的用户,并且正在使用表示其身份的令牌从移动应用程序调用服务器。
另一件需要考虑的事情是,随着无密码认证的使用,取决于所使用的频道,您可能在第一次登录后没有用户电子邮件。例如,如果允许用户通过SMS接收一次代码,并且您的Salesforce查询的输入是电子邮件,那么您需要在用户身份验证之后向他询问其他信息,在本例中是他的电子邮件。还要注意,在这些情况下,除非您确认用户是提供的电子邮件的所有者,否则您可能允许任何人查询其他任何人的捐赠状态。最好只支持通过电子邮件进行的无密码身份验证。
https://stackoverflow.com/questions/39842543
复制相似问题