我正在運(yùn)行一個生成 JWT 令牌的 Go 服務(wù)器。我最初的計(jì)劃是使用 http.Redirect 使用令牌字符串作為 url 的一部分發(fā)送令牌。這似乎不起作用,因?yàn)槲沂褂玫氖?Firebase 靜態(tài)托管,因此只有客戶端路由。如何推送我的令牌?頭也許?我在“example.firebaseapp.com”(A)上運(yùn)行我的靜態(tài)SPA。我正在運(yùn)行我的服務(wù)器,它在“example.us-west-2.compute.amazonaws.com”(B)上生成令牌在CAS服務(wù)器上“運(yùn)行https://login.example.edu/cas/ ”(C)當(dāng)然還有用戶的電腦(D)流程如下用戶從靜態(tài)主機(jī)加載網(wǎng)站 (A)計(jì)算機(jī) D 上的用戶單擊“通過學(xué)校登錄”按鈕并被定向到我的服務(wù)器 (B)B 然后重定向到 cas 服務(wù)器 (C)。用戶輸入他的憑據(jù)并被重定向到計(jì)算機(jī) B。然后計(jì)算機(jī) B 使用密鑰和 uid 生成令牌。這個令牌需要以某種方式設(shè)置回用戶 用戶然后調(diào)用ref.authWithCustomToken("AUTH_TOKEN", function(error, authData) {轉(zhuǎn)到服務(wù)器代碼 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 回答

長風(fēng)秋雁
TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超7個贊
如果我正確理解了流程,那么您缺少的是您的應(yīng)用程序用戶與之對話的端點(diǎn),并且可以將令牌返回給該用戶。
對此的解決方法是讓用戶應(yīng)用程序在步驟 2 中傳遞一個高度不可猜測的值(“請求 ID”),例如 UUID。然后令牌服務(wù)器可以在 中的步驟 5 中將令牌寫入 Firebase 數(shù)據(jù)庫,/tokens/<requestID>
客戶端正在那里偵聽它。
- 1 回答
- 0 關(guān)注
- 160 瀏覽
添加回答
舉報
0/150
提交
取消