From be89fb7dd9782aa8b6f8f8365b6d8ae9d8189ec8 Mon Sep 17 00:00:00 2001 From: David Baker <dave@matrix.org> Date: Tue, 4 Jul 2023 19:01:11 +0100 Subject: [PATCH] Revert changes to auth server code --- backend/auth/server.go | 86 ++++++++++++++---------------------------- 1 file changed, 29 insertions(+), 57 deletions(-) diff --git a/backend/auth/server.go b/backend/auth/server.go index f099784..b3721e2 100644 --- a/backend/auth/server.go +++ b/backend/auth/server.go @@ -15,74 +15,41 @@ type Handler struct { key, secret string } -type OpenIDTokenType struct { -} - -type SFURequest struct { - Room string `json:"room"` - OpenIDToken OpenIDTokenType `json:"openid_token"` - DeviceID string `json:"device_id"` - RemoveMeUserID string `json:"remove_me_user_id"` // we'll get this from OIDC -} - -type SFUResponse struct { - URL string `json:"url"` - JWT string `json:"jwt"` -} - func (h *Handler) handle(w http.ResponseWriter, r *http.Request) { log.Printf("Request from %s", r.RemoteAddr) // Set the CORS headers w.Header().Set("Access-Control-Allow-Origin", "*") - w.Header().Set("Access-Control-Allow-Methods", "POST") - w.Header().Set("Access-Control-Allow-Headers", "Accept, Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token") + w.Header().Set("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE") + w.Header().Set("Access-Control-Allow-Headers", "Accept, Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token, Authorization") // Handle preflight request (CORS) if r.Method == "OPTIONS" { w.WriteHeader(http.StatusOK) return - } else if r.Method == "POST" { - var body SFURequest - err := json.NewDecoder(r.Body).Decode(&body) - if err != nil { - log.Printf("Error decoding JSON: %v", err) - w.WriteHeader(http.StatusBadRequest) - return - } - - if body.Room == "" { - log.Printf("Request missing room") - w.WriteHeader(http.StatusBadRequest) - return - } - - token, err := getJoinToken(h.key, h.secret, body.Room, body.RemoveMeUserID+":"+body.DeviceID) - if err != nil { - w.WriteHeader(http.StatusInternalServerError) - return - } - - res := SFUResponse{URL: "http://localhost:7880/", JWT: token} - - w.Header().Set("Content-Type", "application/json") - json.NewEncoder(w).Encode(res) - } else { - w.WriteHeader(http.StatusMethodNotAllowed) } - /* - roomName := r.URL.Query().Get("roomName") - name := r.URL.Query().Get("name") - identity := r.URL.Query().Get("identity") + roomName := r.URL.Query().Get("roomName") + name := r.URL.Query().Get("name") + identity := r.URL.Query().Get("identity") - log.Printf("roomName: %s, name: %s, identity: %s", roomName, name, identity) + log.Printf("roomName: %s, name: %s, identity: %s", roomName, name, identity) - if roomName == "" || name == "" || identity == "" { - w.WriteHeader(http.StatusBadRequest) - return - } - */ + if roomName == "" || name == "" || identity == "" { + w.WriteHeader(http.StatusBadRequest) + return + } + + token, err := getJoinToken(h.key, h.secret, roomName, identity, name) + if err != nil { + w.WriteHeader(http.StatusInternalServerError) + return + } + + res := Response{token} + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(res) } func main() { @@ -101,11 +68,15 @@ func main() { secret: secret, } - http.HandleFunc("/sfu/get", handler.handle) + http.HandleFunc("/token", handler.handle) log.Fatal(http.ListenAndServe(":8080", nil)) } -func getJoinToken(apiKey, apiSecret, room, identity string) (string, error) { +type Response struct { + Token string `json:"accessToken"` +} + +func getJoinToken(apiKey, apiSecret, room, identity, name string) (string, error) { at := auth.NewAccessToken(apiKey, apiSecret) canPublish := true @@ -120,7 +91,8 @@ func getJoinToken(apiKey, apiSecret, room, identity string) (string, error) { at.AddGrant(grant). SetIdentity(identity). - SetValidFor(time.Hour) + SetValidFor(time.Hour). + SetName(name) return at.ToJWT() }