如何在 React Native + Expo 下使用 SAML 对 Firebase 中的用户进行身份验证

Posted

技术标签:

【中文标题】如何在 React Native + Expo 下使用 SAML 对 Firebase 中的用户进行身份验证【英文标题】:How do I use SAML to authenticate a user in Firebase under React Native + Expo 【发布时间】:2021-12-08 18:15:29 【问题描述】:

当我正在寻找一种将 SAML 单点登录添加到我正在开发的 React Native 应用程序的方法时,我在 SO 或其他地方找不到任何问题(或答案),所以我在这里:请参阅我的回答如下。

【问题讨论】:

【参考方案1】:

首先,我尝试关注Google's documentation for this,但在对 WebViews 进行了很多混乱并试图对 DOM 撒谎之后,我发现它根本不支持 react native(本来不错的在文档中更清楚地看到)。最终,我决定使用 Expo 的WebBrowser 打开的虚拟网页作为中间人来调整这些说明(遵循first 和second 部分)。这是必需的,因为 firebase 在调用 signInWithRedirectsignInWithPopup 时强制协议使用 https(s): 但是当在 javascript 中尝试调用甚至嵌套在然而,WebView,expo 调用本机浏览器,因此在 http(s) 协议上工作,同时仍允许将信息传递回应用程序。使用 react native 的 webview 可能有一种方法可以做到这一点,但我找不到任何类似的东西。

这个前言将我引向我想出的解决方案,我forked expo's examples repo 并提交了一个最小的概念证明(pull request 待定)。

显然使用此功能需要您自担风险,我不是网络安全专家,但即使我知道这里有很多攻击媒介。

【讨论】:

以上是关于如何在 React Native + Expo 下使用 SAML 对 Firebase 中的用户进行身份验证的主要内容,如果未能解决你的问题,请参考以下文章

在生产模式下运行 expo android 应用程序时出错 - React-native

React Native - 如何构建 expo react native 应用程序,使其不需要 Expo android 应用程序打开

如何使用搜索文本输入(expo、react-native)在屏幕上显示项目

React Native Expo 更改默认 LAN IP

如何在 expo/react-native 应用程序中添加自定义节点模块?

React Native:如何使用 expo 在 webview 中制作全屏 youtube 嵌入视频(没有 react-native 链接)