Firebase身份验证:相同(?)node.js身份验证工作流但适用于Ruby后端。如何做?

时间:2017-03-04 22:29:19

标签: ruby authentication firebase firebase-authentication backend

我的应用程序由两部分API组成,现在我们在Hanami(Ruby)上添加了web应用程序。

我在Android应用中添加了Firebase Auth,这很简单且运行正常:一旦我获得firebase jwt,我只是在auth标头中使用它来从后端(API)请求数据。后端解析,根据JWT内容验证它并根据需要创建/更新用户。酷!

现在我们需要为传统(非单页)网络应用添加身份验证(当然,保留移动创建的用户)。

这就是麻烦。

Firebase文档描述了SPA的工作流程,并且几乎没有关于node.js支持的说法(无论如何这都没有帮助,见下文)。

以下是我查看电子邮件/传递网络身份验证的工作流程:

  1. 用户使用表单
  2. 发送电子邮件/传递给后端
  3. 服务器验证它们
  4. 如果他们没问题,服务器会收到电子邮件/通行证并以某种方式将其发送到Firebase ......
  5. firebase创建用户(与使用android auth工作流的方式相同)并使用refresh_token返回jwt(?)
  6. 服务器将此jwt设置为会话HttpOnly安全cookie,并使用它来识别用户和后续请求。
  7. 对于后续请求(来自API或Web应用程序后端,无所谓)我们需要做的就是从头文件(API)或会话(web)中获取jwt,并像处理API调用一样使用它(解析,验证,根据jwt内容从DB获取用户对象)
  8. 正如您所注意到的,第3步是我不知道如何实施的。 如果工作流似乎正确,我在后端需要做的就是这样(node.js):

    firebase.auth().signInWithEmailAndPassword(email, password).catch(function(error) {
    

    但是由于firebasejs src被缩小了,我无法弄清楚在Ruby中实现类似工作流程的情况......

    所以,问题如下:

    • 这个工作流程是否正确/可能?
    • 如果没有,如何解决这个问题?
    • 假设没有客户端JS可以运行,是否仍然可以为Web客户端实现firebase auth?
    • 是否有任何ruby客户端帮助实现此工作流程?我找到了这个gem https://github.com/oscardelben/firebase-ruby,但似乎它没有任何关于身份验证的内容......
    • 我是对的,我不需要自定义令牌身份验证吗?似乎解决了不同的问题,例如实现了(尚未)支持的oauth提供程序或提供自定义声明。

    我正在接受电子邮件/传递身份验证,但在oauth回调中应该完成同样的事情。如下所述: https://firebase.google.com/docs/auth/web/twitter-login#handle_the_sign-in_flow_manually

    但这是另一个故事:)

    任何帮助将非常感谢!我被困在这里谢谢!

0 个答案:

没有答案