从Identity Toolkit迁移到Firebase身份验证

时间:2017-12-12 08:29:13

标签: firebase firebase-realtime-database firebase-authentication

我有一个简单的node.js服务器,它使用Firebase Admin API和身份工具包为客户端在Firebase中生成刷新令牌:

  1. 客户端使用他的凭据向我们的服务器发出POST。
  2. 服务器检查凭据并使用客户端标识符(customToken)创建自定义令牌。

    var admin = require("firebase-admin");
    ...
    admin.auth().createCustomToken(uid);
    
  3. 服务器向https://www.googleapis.com/identitytoolkit/v3/relyingparty/verifyCustomToken?key=API_KEY发送POST请求,其中包含有效负载 {“returnSecureToken”:true,“token”:customToken} ,并返回IdToken和RefreshToken。

  4. 服务器将IdToken和RefreshToken返回给客户端。
  5. 客户端非常简单,不使用Firebase客户端SDK,并通过REST与Firebase数据库通信。(例如GET https://mydomain.firebaseio.com/x.json?auth=IdToken)。
  6. 当IdToken过期时,客户端使用有效负载 {“grantType”:“refresh_token”,“refreshToken”:RefreshToken} https://securetoken.googleapis.com:443/v1/token?key=API_KEY发送POST请求并获取新的IdToken
  7. 现在我正在尝试从使用Identity Toolkit迁移到Firebase身份验证,并在服务器上进行了以下更改:

    1. 客户端使用他的凭据向我们的服务器发出POST。
    2. 服务器检查凭据并使用客户端标识符(customToken)创建自定义令牌,然后使用firebase客户端API和自定义令牌登录以获取IdToken和RefreshToken。

      var firebase = require("firebase");
      var admin = require("firebase-admin");
      ...
      admin.auth().createCustomToken(uid)
      .then(function (customToken) {
         firebase.auth().signInWithCustomToken(customToken).then(function (usuario) {
        firebase.auth().currentUser.getIdToken().then(function (IdToken) {
          console.log(IdToken);
          console.log(firebase.auth().currentUser.refreshToken);
          ...
        });
        }
      );
      

      })。catch(function(error){      console.log(“创建自定义令牌时出错:”,错误);    });

    3. 服务器将IdToken和RefreshToken返回给客户端。

    4. 客户端无法使用Firebase客户端SDK,并通过REST与Firebase数据库通信。(例如GET https://mydomain.firebaseio.com/x.json?auth=IdToken)。
    5. 当IdToken过期时,客户端使用有效负载 {“grantType”:“refresh_token”,“refreshToken”:RefreshToken} https://securetoken.googleapis.com:443/v1/token?key=API_KEY发送POST请求并获取新的IdToken
    6. 根据我的理解阅读文档,服务器应该只创建customTokenId然后客户端,使用Firebase Client SDK应该使用该customToken登录,但在这种情况下客户端是如此简单,没有选项使用客户端SDK,并且仅使用REST运行到Firebase。

      ¿这是管理身份验证过程的正确方法吗? ¿第5步将被弃用,将来会出现问题吗?

0 个答案:

没有答案