Я использую сервер Go, который генерирует токены JWT. Мой первоначальный план состоял в том, чтобы отправлять токены с помощью http.Redirect, используя строку токена как часть URL-адреса.
Похоже, это не работает, потому что я использую статический хостинг Firebase и, следовательно, имею только маршрутизацию на стороне клиента.
Как я могу отправить свой токен? Может заголовки?
- Я запускаю свой статический SPA на «example.firebaseapp.com» (A).
- Я запускаю свой сервер, который генерирует токены на «example.us-west-2.compute.amazonaws.com» (B)
- сервер cas работает по адресу 'https://login.example.edu/cas/' (С)
- Также есть конечно же компьютер пользователя (D)
Поток идет следующим образом
- Пользователь загружает веб-сайт со статического хоста (A)
- Пользователь на компьютере D нажимает кнопку «Войти через школу» и перенаправляется на мой сервер (B)
- Затем B перенаправляет на сервер cas (C). Пользователь вводит свои учетные данные и перенаправляется на компьютер B.
- Затем компьютер B генерирует токен, используя секретный ключ и идентификатор пользователя.
- Этот токен нужно каким-то образом вернуть пользователю. Затем пользователь вызовет
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)
}