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

Go Firebase自定义身份验证传递令牌,go,firebase,firebase-authentication,Go,Firebase,Firebase Authentication,我正在运行一个生成JWT令牌的Go服务器。我最初的计划是使用http.Redirect发送令牌,使用令牌字符串作为url的一部分 这似乎不起作用,因为我使用的是Firebase静态主机,因此只有客户端路由 我怎样才能推我的代币?也许吧 我正在“example.firebaseapp.com”(A)上运行我的staticSPA 我正在运行服务器,该服务器在“example.us-west-2.compute.amazonaws.com”(B)上生成令牌 cas服务器正在“”上运行(C) 当然还有

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

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

我怎样才能推我的代币?也许吧

  • 我正在“example.firebaseapp.com”(A)上运行我的staticSPA
  • 我正在运行服务器,该服务器在“example.us-west-2.compute.amazonaws.com”(B)上生成令牌
  • cas服务器正在“”上运行(C)
  • 当然还有用户的计算机(D)
流程如下

  • 用户从静态主机加载网站(A)
  • 计算机D上的用户单击“通过学校登录”按钮,并被定向到我的服务器(B)
  • B然后重定向到cas服务器(C)。用户输入他的凭证并被重定向到计算机B
  • 然后,计算机B使用密钥和uid生成令牌
  • 需要以某种方式将此令牌设置回用户 然后,用户将调用
    ref.authWithCustomToken(“AUTH_TOKEN”,函数(错误,authData){
  • Go服务器代码
    如果我正确理解了流程,那么您缺少的是与应用程序用户对话的端点,该端点可以将令牌返回给该用户


    解决方法是让用户应用程序通过一个高度不可用的值(“请求ID”)在第2步中,类似UUID的东西。然后,令牌服务器可以在第5步中
    /tokens/
    将令牌写入Firebase数据库,客户端正在侦听令牌。

    我不清楚您试图做什么。您在哪里运行Go服务器?您试图如何传递令牌?显示问题的代码可能会有很大帮助澄清。@FrankvanPuffelen我更新了我的帖子。我正在AWS上运行我的go服务器。我正在通过URL传递令牌,这确实有效,但静态服务器无法识别URL,因为它没有路由。代码的格式有点混乱。不知道为什么-如果你愿意,请随意编辑我的帖子。@ChrisW,你有没有收到过这样的消息找到答案了吗?我很好奇你最后做了什么,因为我正在考虑完全相同的工作流程。我们也使用CAS进行中央身份验证。是的!我按照Frank说的做了。我通过URL传递了令牌。谢谢,我会试试这个
        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)
    
        }