为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
缥缈止盈 2021-12-27 14:58:55
我正在运行一个生成 JWT 令牌的 Go 服务器。我最初的计划是使用 http.Redirect 使用令牌字符串作为 url 的一部分发送令牌。这似乎不起作用,因为我使用的是 Firebase 静态托管,因此只有客户端路由。如何推送我的令牌?头也许?我在“example.firebaseapp.com”(A)上运行我的静态SPA。我正在运行我的服务器,它在“example.us-west-2.compute.amazonaws.com”(B)上生成令牌在CAS服务器上“运行https://login.example.edu/cas/ ”(C)当然还有用户的电脑(D)流程如下用户从静态主机加载网站 (A)计算机 D 上的用户单击“通过学校登录”按钮并被定向到我的服务器 (B)B 然后重定向到 cas 服务器 (C)。用户输入他的凭据并被重定向到计算机 B。然后计算机 B 使用密钥和 uid 生成令牌。这个令牌需要以某种方式设置回用户 用户然后调用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)    }
查看完整描述

1 回答

?
长风秋雁

TA贡献1757条经验 获得超7个赞

如果我正确理解了流程,那么您缺少的是您的应用程序用户与之对话的端点,并且可以将令牌返回给该用户。

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


查看完整回答
反对 回复 2021-12-27
  • 1 回答
  • 0 关注
  • 134 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信