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

时间:2015-03-19 21:48:26

标签: android authentication oauth oauth-2.0 firebase

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

提到

  

如果您已经在服务器上管理用户帐户,有更高级的身份验证需求,或者用于验证服务器端工作程序,则此身份验证方法非常有用。

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

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

1 个答案:

答案 0 :(得分:4)

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

  1. 使用提供商通过OAuth对用户进行身份验证。然后,用户将被重定向到您的回调URL。您使用提供程序指定此URL。对于LinkedIn,请参阅this页面,它们将回调网址称为可信终结点
  2. 一旦用户被重定向到回调URL,就会生成您的JSON Web令牌(JWT)服务器端,遵循Firebase提供的示例(请参阅this页面),即如果您正在使用ruby
  3. 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向您的提供商验证用户身份,然后通过覆盖shouldInterceptRequest中的方法WebViewClient来拦截响应。阅读WebViewClient文档了解更多信息

    需要您自己的服务器来处理涉及Firebase密钥的操作。 存储此客户端。实际上,请注意Firebase自定义身份验证页面上的内容:

      

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

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