Firebase 自定义身份验证传递令牌

Firebase Custom Authentication passing tokens

我是运行一个生成JWT令牌的Go服务器。我最初的计划是使用 http.Redirect 发送令牌,使用令牌字符串作为 url 的一部分。

这似乎不起作用,因为我使用的是 Firebase 静态托管,因此只有客户端路由。

如何推送我的令牌? Headers 也许吧?

流程如下

  1. 用户从静态主机加载网站 (A)
  2. 计算机 D 上的用户单击 'login through school' 按钮并被定向到我的服务器 (B)
  3. B 然后重定向到 cas 服务器 (C)。用户输入他的凭据并被重定向到计算机 B。
  4. 计算机 B 然后使用密钥和 uid 生成令牌。
  5. 此令牌需要以某种方式设置回用户 然后用户会调用 ref.authWithCustomToken("AUTH_TOKEN", function(error, authData) {

转到服务器代码

    func (h *myHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
      if !cas.IsAuthenticated(r) {
        cas.RedirectToLogin(w, r)
        return
      }

    if r.URL.Path == "/logout" {
        cas.RedirectToLogout(w, r)
        return
    }

  generatedToken := generateToken("uid") // token is created using a uid and a secret
    redirectURL := websiteURL + generatedToken
    println(redirectURL)

    println(generatedToken)
    http.Redirect(w, r, redirectURL, http.StatusFound) // I attempt to send the token using a redirect. This doesn't seem to work though since the static server only supports routing for '/'. 
    //html.WriteTo(w)

    }

如果我对流程的理解正确,那么您缺少的是您的应用用户与之交谈的端点,并且可以 return 该用户的令牌。

解决此问题的方法是让用户应用程序在第 2 步中传递一个高度不可猜测的值("request ID"),例如 UUID。然后,令牌服务器可以在 /tokens/<requestID> 中的第 5 步将令牌写入 Firebase 数据库,客户端正在侦听它。