是否可以通过 React-Native WebView 对 Salesforce 社区进行生物识别登录?

Is it possible to do biometric login through a React-Native WebView, to a Salesforce Community?

我有一个独特的情况,我试图将 salesforce 社区站点放在 React-Native webview 中,但我想添加另一种登录方式。我已经在 web 视图中拥有标准的用户名和密码登录名,但我希望可以选择执行 fingerprint/face id 登录名。问题是,由于我使用 webview 来显示我的网站,是否可以利用我的硬件生物识别功能并将其发送到 salesforce 以允许通过 webview 登录?

我已经对此进行了研究,但我没有找到答案。我看过很多关于闪电登录的文章,但我不希望该应用程序的用户下载身份验证器应用程序,以便他们可以在我的应用程序中使用他们的 fingerprint/face id 登录。

您可能想要一个连接的应用程序,它通过 OAuth 为您提供访问令牌和刷新令牌。

用户第一次 => 使用 OAuth 重定向到 Webview,您将获得存储在用户 phone.

上的访问令牌和刷新令牌

所有其他时间 => 用户被要求提供 TouchID,您获取存储的刷新令牌,您从连接的应用程序获取带有刷新流的新访问令牌。

您的所有 Api 通话都会有 Authorization : Bearer <Access_Token>.

我们最终确定了我们将继续处理的问题的可能解决方案。

我们的问题是,即使移动设备获得授权,也不意味着 webview 中的会话获得授权,反之亦然。在我们的案例中,单独验证它们不是一个选项,因为我们希望生物识别登录也能通过 webview 登录用户。为了在不使解决方案过于复杂的情况下解决这个问题,我们认为最好是我们可以在 web 视图 url 中使用一些凭据来验证用户是否是他们所说的人。

点击我们的

https://.../services/oauth2/authorize?response_type=token&client_id=...
&redirect_uri=...

请求访问令牌的端点,我们可以使用它来验证用户是否是他们所说的人。

一旦我们在 react-native 应用程序中有了我们的访问令牌,我们就使用 frontdoor.jsp 允许传递 session_id 以跳过必须使用用户名和密码登录。 session_id 值是之前获取的访问令牌。我们的端点看起来像这样:

https://.../secur/frontdoor.jsp?sid=...&retURL=...

https://help.salesforce.com/articleView?id=security_frontdoorjsp.htm&type=5

生物识别部分的作用是获取访问令牌并修改我们的 webview url,以便在用户成功通过生物识别验证后重定向到前门端点。

我们也将使用生物特征来处理刷新令牌流。

希望这能够帮助可能 运行 遇到这种情况的其他人。