反应本机 Salesforce 的身份验证架构 "connect app"

Authentication architecture for react-native Salesforce "connect app"

我想为我的非营利组织创建一个面向 public 的 react-native 应用程序(通过 App Store 和 Google Play 下载),该应用程序显示基于他们的数字会员卡捐赠历史存储在我们的 Salesforce 数据库中(使用 NPSP)。

我的基本想法是让用户使用某种类型的无密码身份验证方案进行身份验证(react-native-lock,本机移动应用程序还有其他方法吗?)然后使用经过身份验证的用户名和电子邮件作为查询参数API 调用 Salesforce 的 REST API。我正在考虑从我的 Salesforce "connected app" 的 creation/registration 中对消费者密钥和消费者密钥进行硬编码,或者对消费者密钥进行硬编码,然后使用来自的消费者密钥来丰富 API 调用一个 Heroku app/server,然后将 API 调用转发给 Salesforce。丰富的代理 API 服务器是否在没有增加安全性的情况下矫枉过正?

我想我会创建一个具有只读权限的 Salesforce 用户,我想其凭据也会被硬编码到应用程序中?并且该硬编码的经过身份验证的 Salesforce 只读用户可以使用应用程序用户名和电子邮件作为查询参数进行 API 调用,以检索捐赠信息以确定成员资格。这对我来说听起来很疯狂,但我想不出另一种方法来做到这一点。

我担心的是,通过构建此应用程序,我会以一种难以正确保护的方式公开我们的数据库。对于本机应用程序架构来说,这是一个糟糕的想法吗?我还能如何使用本机反应、无密码身份验证和 Salesforce 实现在本机应用程序中向会员展示数字会员卡的目标?我认为我们不想为我们拥有的每个捐助者创建 Salesforce 用户。这对我来说也不正确。

在本机移动应用程序、浏览器应用程序或客户端上代码为 运行 的任何其他应用程序中硬编码的任何类型的秘密 and/or 凭据都不能再被视为秘密。

你指出了我也会推荐的内容,你应该有某种服务器端组件,其中存储 API 密钥 and/or 硬编码凭据可以被认为是安全的。

该服务器端组件将在确保它被经过身份验证的用户调用后与系统的敏感部分 (Salesforce) 进行所有通信,在您的情况下,这只是一个已经通过验证的用户无密码身份验证步骤并使用代表其身份的令牌从移动应用程序调用服务器。

另一件要记住的事情是 Passwordless Authentication 根据所使用的频道,您可能在第一次登录后没有用户电子邮件。例如,如果允许用户通过 SMS 接收一次性代码,并且您的 Salesforce 查询输入是一封电子邮件,那么您需要在用户进行身份验证后向他询问其他信息,在本例中是他的电子邮件。另请注意,在这些情况下,除非您验证用户是所提供电子邮件的所有者,否则您可能会允许任何人查询其他人的捐赠状态。最好只支持通过电子邮件进行无密码身份验证。