@@ -25,13 +25,13 @@ import (
2525 "fmt"
2626 "net/http"
2727 "net/url"
28- "strconv"
2928 "strings"
3029 "time"
3130
3231 "github.com/minio/minio-go/v7/pkg/credentials"
3332 "github.com/minio/minio-go/v7/pkg/set"
3433
34+ "github.com/minio/console/pkg/auth/token"
3535 "github.com/minio/console/pkg/auth/utils"
3636 "golang.org/x/crypto/pbkdf2"
3737 "golang.org/x/oauth2"
@@ -331,22 +331,23 @@ func (client *Provider) VerifyIdentity(ctx context.Context, code, state, roleARN
331331 return nil , errors .New ("invalid token" )
332332 }
333333
334- // expiration configured in the token itself
335- expiration := int (oauth2Token .Expiry .Sub (time .Now ().UTC ()).Seconds ())
334+ expiration := token .GetConsoleSTSDuration ()
335+ if exp := getIDPTokenExpiration (); exp > 0 {
336+ expiration = exp
337+ }
336338
337- // check if user configured a hardcoded expiration for console via env variables
338- // and override the incoming expiration
339- userConfiguredExpiration := getIDPTokenExpiration ()
340- if userConfiguredExpiration != "" {
341- expiration , _ = strconv .Atoi (userConfiguredExpiration )
339+ // Use the expiration configured in the token itself if it is closer than the configured value
340+ if exp := oauth2Token .Expiry .Sub (time .Now ().UTC ()); exp < expiration {
341+ expiration = exp
342342 }
343+
343344 idToken := oauth2Token .Extra ("id_token" )
344345 if idToken == nil {
345346 return nil , errors .New ("missing id_token" )
346347 }
347348 token := & credentials.WebIdentityToken {
348349 Token : idToken .(string ),
349- Expiry : expiration ,
350+ Expiry : int ( expiration . Seconds ()) ,
350351 }
351352 if client .UserInfo { // look for access_token only if userinfo is requested.
352353 accessToken := oauth2Token .Extra ("access_token" )
0 commit comments