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

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

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

如何推送令牌? 可能是标题?</ p>


  • 我正在'example.firebaseapp.com'(A)上运行我的静态</ strong> SPA。 </ li>
  • 我正在运行我的服务器,该服务器在“ example.us-west-2.compute.amazonaws.com”(B)上生成令牌</ strong> </ li>
  • cas服务器</ strong>在' https://login.example.edu上运行 / cas / '(C)</ li>
  • 当然也有用户的计算机(D)</ li>
    </ ul>

    如下</ p>


    1. 用户从静态主机(A)加载网站</ li>
    2. 计算机D上的用户单击“通过学校登录”按钮,并且 定向到我的服务器(B)</ li>
    3. B,然后重定向到cas服务器(C)。 用户输入凭据,然后将其重定向到计算机B。</ li>
    4. 计算机B随后使用密钥和uid生成令牌。</ li>
    5. 此令牌需要 然后以某种方式设置回用户</ strong>
      用户将调用 ref.authWithCustomToken(“ AUTH_TOKEN”,function(error,authData){</ code> </ li>
      </ ol> \ n

      执行服务器代码</ h2>

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

      如果r.URL.Path ==“ / logout” {
      cas.RedirectToLogout(w,r)
      返回
      }

      generateToken:= generateToken(“ uid”)//令牌是使用uid和秘密创建的
      redirectURL:= websiteURL + generateToken
      println(redirectURL)

      println(GeneratedToken)\ n http.Redirect(w,r,redirectURL,http.StatusFound)//我尝试使用重定向发送令牌,但这似乎不起作用,因为静态服务器仅支持 端口路由“ /”。

      //html.WriteTo(w)

      }
      </ code> </ pre>
      </ div>

展开原文

原文

I am running a Go server that generates JWT tokens. My original plan was to send the tokens using an http.Redirect using the token string as part of the url.

This doesn't appear to work because I'm using Firebase static hosting and hence only have client side routing.

How can I push my token? Headers maybe?

  • I'm running my static SPA on 'example.firebaseapp.com' (A).
  • I'm running my server that generates tokens on 'example.us-west-2.compute.amazonaws.com' (B)
  • The cas server is running on 'https://login.example.edu/cas/' (C)
  • There is also of course the user's computer (D)

The flow goes as follows

  1. User load website from static host (A)
  2. User on computer D clicks 'login through school' button and is directed to my server (B)
  3. B then redirects to cas server (C). User puts in his credentials and is redirected to computer B.
  4. Computer B then generates a token using a secret key and a uid.
  5. This token needs to somehow be set back to the user User would then call ref.authWithCustomToken("AUTH_TOKEN", function(error, authData) {

Go Server Code

    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)

    }

douliao8760
douliao8760 是啊!我听了弗兰克所说的话。我通过URL传递了令牌。
大约 4 年之前 回复
dongshou9343
dongshou9343 你有没有想过这个?我很好奇您最终要做什么,因为我正在考虑这个完全相同的工作流程。我们还将CAS用于中央身份验证。
大约 4 年之前 回复
dongshushen4392
dongshushen4392 我更新了我的帖子。我正在AWS上运行go服务器。我正在通过有效的URL传递令牌,但是静态服务器无法识别该URL,因为它没有路由。代码的格式有点混乱,不确定为什么-随意编辑我的帖子。
4 年多之前 回复
douhan1992
douhan1992 我不清楚您要做什么。您在哪里运行Go服务器?您如何尝试传递令牌?显示问题的最小代码,完整代码可能需要很长的时间才能弄清楚。
4 年多之前 回复

1个回答

If I understand the flow correctly, then what you're missing is an end point that your app user talks to and that can return the token to that user.

A workaround for this would be to have the user app pass in a highly unguessable value (a "request ID") in step 2, something like a UUID. The token server can then write the token into the Firebase Database in step 5 in /tokens/<requestID>, where the client is listening for it.

dongshuo8756
dongshuo8756 谢谢,我会尝试一下
4 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐