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

How do I use SAML to authenticate a user in Firebase under React Native + Expo

当我正在寻找一种方法将 SAML 单点登录添加到我正在处理的 React Native 应用程序时,我在 SO 或其他地方找不到任何问题(或答案),所以我来了: 请看下面我的回答。

首先,我尝试按照 Google's documentation for this but after a lot of messing about with WebViews and trying to lie to the DOM, I found out that it simply wasn't supported on react native (something that would have been nice to see in the docs a bit more obviously). Eventually I settled on adapting those instructions (follow the first and second 部分)使用 Expo WebBrowser 打开的虚拟网页充当中间人。这是必需的,因为 firebase 在调用 signInWithRedirectsignInWithPopup 时强制执行 https(s): 协议,但 React Native 将发送协议 about: 或尝试在 [= 中调用时类似的东西21=] 甚至嵌套在 WebView 中,expo 调用本机浏览器,因此在 http(s) 协议上工作,同时仍允许将信息传回应用程序。可能有一种方法可以使用 react native 的 webview 来做到这一点,但我找不到任何类似的东西。

这篇前言让我找到了我想出的解决方案,我 forked expo's examples repo and committed a minimal proof of concept (pull request 待定)。

显然,使用它需要您自担风险,我不是网络安全专家,但即使我知道这里有不止几种攻击媒介。