我正在运行一个生成 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>
客户端正在那里侦听它。
- 1 回答
- 0 关注
- 134 浏览
添加回答
举报
0/150
提交
取消