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