Firebase:如何从服务器上的用户名和密码生成访问令牌?

为我们

我有一个Firebase应用程序,并且正在集成Zapier。他们要求用户通过其表单向我的应用进行身份验证。

它的工作方式是Zapier将向用户请求电子邮件和密码,并将其发送到我的端点以获取访问令牌,并将其与其他任何请求一起使用。

由于所有身份验证方法都存在于客户端SDK中,因此我不太清楚如何从服务器(节点js)上的用户名和密码生成访问令牌。

到目前为止,我希望使用提供的电子邮件/密码对用户进行身份验证,从用户那里生成自定义令牌,uid然后将其发送回Zapier。但是我不能这样做,因为signInWithEmailAndPassword服务器SDK中没有或类似的方法。

我知道我可以通过电子邮件获取用户,但是由于相应的方法再次仅在客户端SDK中可用,因此我该如何检查密码呢?

到目前为止,我有以下代码:

const rp = require('request-promise');

app.post('/api/integrations/zapier/auth', (req, res) => {
        let data = req.body
        admin.auth().signInWithEmailAndPassword(data.email, data.password) // <- this method doesn't exist in the server sdk
            .then(response => admin.auth().createCustomToken(response.user.id))
            .then(customToken => rp({
                url: `https://www.googleapis.com/identitytoolkit/v3/relyingparty/verifyCustomToken?key=${config.apiKey}`,
                method: 'POST',
                body: {
                    token: customToken,
                    returnSecureToken: true
                },
                json: true,
            }))
            .then(idToken => {
                res.send({
                    accessToken: idToken,
                    filed: data.email
                });
            }).catch(error => res.status(500).send(error));
    })
克里斯托弗·佩塞雷(Christopher Peiseret)

由于文档指出:使用Firebase Admin SDK来基于登录凭据创建自定义令牌会造成混淆。

创建自定义令牌

Firebase允许您使用安全的JSON Web令牌(JWT)对用户或设备进行身份验证,从而使您可以完全控制身份验证。您在服务器上生成这些令牌,将它们传递回客户端设备,然后使用它们通过signInWithCustomToken()方法进行身份验证

为此,您必须创建一个服务器终结点,该终结点接受登录凭据(例如用户名和密码),并且如果凭据有效,则返回自定义JWT。然后,客户端设备可以使用从服务器返回的自定义JWT来向Firebase( iOS Android Web进行身份验证

有一个基于用户的Firebase创建自定义令牌的示例uid

admin.auth().createCustomToken(uid)

但是文档没有首先显示如何验证用户凭据是否有效。

由于Firebase Admin SDK不提供用于验证凭据的方法,因此解决方法是结合使用Firebase Admin SDK和Firebase Auth REST API。

  1. 使用Firebase Auth REST API通过电子邮件/密码登录
  2. 身份验证成功后,请使用Firebase Admin SDK方法 getUserByEmail
  3. Firebase Admin SDKUserRecord将包含uid,然后可以将其传递到admin.auth().createCustomToken(uid)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

具有用户名和密码认证的Git服务器

来自分类Dev

如何使用用户名和密码访问Active Directory上的用户文件夹?

来自分类Dev

Android如何使用身份验证用户名和密码从以下URL从Web服务器获取响应

来自分类Dev

Chrome-需要验证。服务器需要用户名和密码

来自分类Dev

无法使用用户名/密码连接到SFTP服务器

来自分类Dev

使用Windows资源管理器以用户名和密码连接到服务器

来自分类Dev

服务器在上载文件时询问用户名和密码

来自分类Dev

如何找到存储用户名和密码的邮件服务器的数据库?

来自分类Dev

如何授予不使用特定用户名和密码的用户访问数据库的权限?

来自分类Dev

如何使用用户名和密码访问Active Directory上的用户文件夹?

来自分类Dev

无法使用有效的用户名和密码使用PuTTy进行ssh。如何确保服务器和PuTTy键盘/端子相同?其他事宜?

来自分类Dev

僵尸网络客户端如何访问用户的用户名和密码?

来自分类Dev

如何使用用户名/密码阻止对服务器的请求?

来自分类Dev

如何在服务器上使用git-修复conq用户名

来自分类Dev

开源用户名密码存储软件,可在内部服务器上运行并且是多用户

来自分类Dev

Chrome-需要验证。服务器需要用户名和密码

来自分类Dev

如何使用用户的主机名或用户名在服务器上记录所有SSH活动?

来自分类Dev

在桌面屏幕上显示IP / MAC地址,运行时间/ DNS服务器和登录的用户名

来自分类Dev

如何查找在Debian上运行的SSH服务器的用户名

来自分类Dev

LFTP:保存特定服务器的用户名/密码?

来自分类Dev

iOS:使用钥匙串存储用户名、密码和访问令牌

来自分类Dev

rstudio 服务器上带有 opencpu 的 Web 应用程序被要求输入用户名和密码

来自分类Dev

如何在提示连接到远程服务器时自动输入用户名和密码

来自分类Dev

以安全的方式将用户名和密码传递给服务器

来自分类Dev

Excel VBA 用户表单在服务器上使用用户名和密码登录

来自分类Dev

浏览器如何在所有网页上发现用户名和密码?

来自分类Dev

RESTful 服务需要用户名和密码才能获取令牌,是否可以在服务器端 nodejs 中保存凭据(用户和密码)?

来自分类Dev

客户端/服务器应用程序,如何以域用户身份在远程系统上创建进程而不将该用户的用户名/密码传输到远程系统?

来自分类Dev

如何使用用户名密码连接 coreNLP 服务器?

Related 相关文章

  1. 1

    具有用户名和密码认证的Git服务器

  2. 2

    如何使用用户名和密码访问Active Directory上的用户文件夹?

  3. 3

    Android如何使用身份验证用户名和密码从以下URL从Web服务器获取响应

  4. 4

    Chrome-需要验证。服务器需要用户名和密码

  5. 5

    无法使用用户名/密码连接到SFTP服务器

  6. 6

    使用Windows资源管理器以用户名和密码连接到服务器

  7. 7

    服务器在上载文件时询问用户名和密码

  8. 8

    如何找到存储用户名和密码的邮件服务器的数据库?

  9. 9

    如何授予不使用特定用户名和密码的用户访问数据库的权限?

  10. 10

    如何使用用户名和密码访问Active Directory上的用户文件夹?

  11. 11

    无法使用有效的用户名和密码使用PuTTy进行ssh。如何确保服务器和PuTTy键盘/端子相同?其他事宜?

  12. 12

    僵尸网络客户端如何访问用户的用户名和密码?

  13. 13

    如何使用用户名/密码阻止对服务器的请求?

  14. 14

    如何在服务器上使用git-修复conq用户名

  15. 15

    开源用户名密码存储软件,可在内部服务器上运行并且是多用户

  16. 16

    Chrome-需要验证。服务器需要用户名和密码

  17. 17

    如何使用用户的主机名或用户名在服务器上记录所有SSH活动?

  18. 18

    在桌面屏幕上显示IP / MAC地址,运行时间/ DNS服务器和登录的用户名

  19. 19

    如何查找在Debian上运行的SSH服务器的用户名

  20. 20

    LFTP:保存特定服务器的用户名/密码?

  21. 21

    iOS:使用钥匙串存储用户名、密码和访问令牌

  22. 22

    rstudio 服务器上带有 opencpu 的 Web 应用程序被要求输入用户名和密码

  23. 23

    如何在提示连接到远程服务器时自动输入用户名和密码

  24. 24

    以安全的方式将用户名和密码传递给服务器

  25. 25

    Excel VBA 用户表单在服务器上使用用户名和密码登录

  26. 26

    浏览器如何在所有网页上发现用户名和密码?

  27. 27

    RESTful 服务需要用户名和密码才能获取令牌,是否可以在服务器端 nodejs 中保存凭据(用户和密码)?

  28. 28

    客户端/服务器应用程序,如何以域用户身份在远程系统上创建进程而不将该用户的用户名/密码传输到远程系统?

  29. 29

    如何使用用户名密码连接 coreNLP 服务器?

热门标签

归档