14198: Remote user uses current token in runtime_token
authorPeter Amstutz <pamstutz@veritasgenetics.com>
Tue, 13 Nov 2018 16:42:19 +0000 (11:42 -0500)
committerPeter Amstutz <pamstutz@veritasgenetics.com>
Tue, 13 Nov 2018 16:42:19 +0000 (11:42 -0500)
Can't create a new token for a remote user, so use the token that was
supplied.

Arvados-DCO-1.1-Signed-off-by: Peter Amstutz <pamstutz@veritasgenetics.com>

lib/controller/fed_containers.go

index 1ca27bf6f584ad0a55fbc72cd4af56621d10c7c4..7b8cdabe5524898e215120941e9400bcae5d510c 100644 (file)
@@ -57,7 +57,7 @@ func remoteContainerRequestCreate(
        originalBody := req.Body
        defer originalBody.Close()
        var request map[string]interface{}
-       err := json.NewDecoder(req.Body).Decode(&request)
+       err = json.NewDecoder(req.Body).Decode(&request)
        if err != nil {
                httpserver.Error(w, err.Error(), http.StatusBadRequest)
                return true
@@ -89,27 +89,18 @@ func remoteContainerRequestCreate(
                }
 
                if strings.HasPrefix(currentUser.Authorization.UUID, h.handler.Cluster.ClusterID) {
-                       // Local user, so create a new token
+                       // Local user, submitting to a remote cluster.
+                       // Create a new time-limited token.
                        newtok, err := h.handler.createAPItoken(req, currentUser.UUID, nil)
                        if err != nil {
                                httpserver.Error(w, err.Error(), http.StatusForbidden)
                                return true
                        }
                        containerRequest["runtime_token"] = newtok.TokenV2()
-               } else if strings.HasPrefix(currentUser.Authorization.UUID, *cluster_id) {
-                       // Remote user from the cluster that we want
-                       // to send work to.  Submit container to run
-                       // using current token.
-                       containerRequest["runtime_token"] = creds.Tokens[0]
                } else {
-                       // Remote user.  Submit container to run with current token,
-                       // salted for the target cluster.
-                       saltedToken, err := auth.SaltToken(creds.Tokens[0], *clusterId)
-                       if err != nil {
-                               httpserver.Error(w, err.Error(), http.StatusForbidden)
-                               return true
-                       }
-                       containerRequest["runtime_token"] = saltedToken
+                       // Remote user. Container request will use the
+                       // current token.
+                       containerRequest["runtime_token"] = creds.Tokens[0]
                }
        }