在 Firebase 中实施自定义身份验证的工作流程是啥?

Posted

技术标签:

【中文标题】在 Firebase 中实施自定义身份验证的工作流程是啥?【英文标题】:What is the workflow to implement the custom authentication in Firebase?在 Firebase 中实施自定义身份验证的工作流程是什么? 【发布时间】:2015-05-23 05:14:09 【问题描述】:

首先,我是 OAuth 和 Firebase 的新手。我用谷歌搜索了一下,以找到 Firebase 未正式支持的社交媒体的 OAuth 登录,例如。领英和微信。但我能找到的只是Custom Authentication,我并不完全理解。 :(

上面提到了

这种身份验证方法在您已经在服务器上管理用户帐户、您有更高级的身份验证需求或对服务器端工作人员进行身份验证的情况下很有用。

这是否意味着我必须拥有自己的服务器才能进行身份验证?

如果答案是肯定的,那么涉及移动应用、我自己的服务器、Firebase 和 OAuth 授权服务器(例如来自 LinkedIn)的身份验证的工作流程如何?

【问题讨论】:

如果您还没有适当的身份验证系统,或者知道如何构建一个,那么签署您自己的令牌(即自定义身份验证)可能不是您需要的。 【参考方案1】:

是的,您需要一台服务器进行身份验证。您至少需要进行两个不同的 API 调用:

    通过 OAuth 向提供者验证用户。然后,用户将被重定向到您的回调 URL。您使用提供商指定此 url。对于 LinkedIn,请参阅 this 页面,他们将回调 URL 称为可信端点。 一旦用户被重定向到回调 URL,您将按照 Firebase 给出的示例(参见 this 页面)生成您的 JSON Web 令牌 (JWT) 服务器端,即如果您使用的是 ruby​​
require "firebase_token_generator"

payload = :uid => "1", :auth_data => "foo", :other_auth_data => "bar"

generator = Firebase::FirebaseTokenGenerator.new("<YOUR_FIREBASE_SECRET>")
token = generator.create_token(payload)

然后,将此token 推送给您的用户。至于为移动应用程序实现这一点,只需在客户端点击回调 URL 后将此令牌包含在对您的客户端的 JSON 响应中。您可能需要使用WebView 向您的提供者验证用户身份,然后通过覆盖WebViewClient 中的方法shouldInterceptRequest 来拦截响应。阅读WebViewClient 文档了解更多信息

需要您自己的服务器来执行涉及您的 Firebase Secret 的操作。请勿存储此客户端。实际上,请注意 Firebase 自定义身份验证页面上的说明:

Firebase JWT 应始终在受信任的服务器上生成,以便生成它们所需的 Firebase Secret 可以保密。

有关 OAuth 的更多信息,请参阅 OAuth 2 Simplified,或 SO 问题 On a high level, how does OAuth 2 work?

【讨论】:

以上是关于在 Firebase 中实施自定义身份验证的工作流程是啥?的主要内容,如果未能解决你的问题,请参考以下文章

asp.net core 2.0 授权在身份验证(JWT)之前触发

如何在视图模型中实现 Firebase 电话身份验证?

Flutter:使用谷歌身份验证在 Firebase 存储中实施任何身份验证失败

如何在 Firebase 身份验证中实现多用户帐户登录和切换?

如何在 MVVM-C RxSwift 中实现 firebase 身份验证

在 SwiftUI 中实现 Firebase 身份验证时,Xcode 13 找不到 FacebookAppID [重复]