fix(extension): extend JWT auth token expiration for extension EE-3065 (#6881)

The default expiration time of 8 hours does not make sense in the
context of the docker desktop extension. This adds a new feature flag
which can be enabled with `export DOCKER_EXTENSION=1` and when 
present will set the expiration time to 99 years.

I've set this flag in the docker-compose.yml we use when building our
docker extension.
pull/6890/head
Dakota Walsh 2022-05-06 09:52:47 +12:00 committed by GitHub
parent c732ca2d2f
commit 3de585fe17
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 0 deletions

View File

@ -3,12 +3,14 @@ package jwt
import ( import (
"errors" "errors"
"fmt" "fmt"
"os"
"time" "time"
"github.com/golang-jwt/jwt" "github.com/golang-jwt/jwt"
"github.com/gorilla/securecookie" "github.com/gorilla/securecookie"
portainer "github.com/portainer/portainer/api" portainer "github.com/portainer/portainer/api"
"github.com/portainer/portainer/api/dataservices" "github.com/portainer/portainer/api/dataservices"
log "github.com/sirupsen/logrus"
) )
// scope represents JWT scopes that are supported in JWT claims. // scope represents JWT scopes that are supported in JWT claims.
@ -164,6 +166,12 @@ func (service *Service) generateSignedToken(data *portainer.TokenData, expiresAt
return "", fmt.Errorf("invalid scope: %v", scope) return "", fmt.Errorf("invalid scope: %v", scope)
} }
if _, ok := os.LookupEnv("DOCKER_EXTENSION"); ok {
// Set expiration to 99 years for docker desktop extension.
log.Infof("[message: detected docker desktop extension mode]")
expiresAt = time.Now().Add(time.Hour * 8760 * 99).Unix()
}
cl := claims{ cl := claims{
UserID: int(data.ID), UserID: int(data.ID),
Username: data.Username, Username: data.Username,

View File

@ -5,6 +5,8 @@ services:
image: ${DESKTOP_PLUGIN_IMAGE} image: ${DESKTOP_PLUGIN_IMAGE}
command: ['--admin-password', '$$$$2y$$$$05$$$$bsb.XmF.r2DU6/9oVUaDxu3.Lxhmg1R8M0NMLK6JJKUiqUcaNjvdu'] command: ['--admin-password', '$$$$2y$$$$05$$$$bsb.XmF.r2DU6/9oVUaDxu3.Lxhmg1R8M0NMLK6JJKUiqUcaNjvdu']
restart: unless-stopped restart: unless-stopped
environment:
- DOCKER_EXTENSION=1
security_opt: security_opt:
- no-new-privileges:true - no-new-privileges:true
volumes: volumes: