diff --git a/object/token_oauth.go b/object/token_oauth.go index 5db0bb4e..d2a5f804 100644 --- a/object/token_oauth.go +++ b/object/token_oauth.go @@ -309,22 +309,29 @@ func RefreshToken(grantType string, refreshToken string, scope string, clientId }, nil } + var oldTokenScope string if application.TokenFormat == "JWT-Standard" { - _, err = ParseStandardJwtToken(refreshToken, cert) + oldToken, err := ParseStandardJwtToken(refreshToken, cert) if err != nil { return &TokenError{ Error: InvalidGrant, ErrorDescription: fmt.Sprintf("parse refresh token error: %s", err.Error()), }, nil } + oldTokenScope = oldToken.Scope } else { - _, err = ParseJwtToken(refreshToken, cert) + oldToken, err := ParseJwtToken(refreshToken, cert) if err != nil { return &TokenError{ Error: InvalidGrant, ErrorDescription: fmt.Sprintf("parse refresh token error: %s", err.Error()), }, nil } + oldTokenScope = oldToken.Scope + } + + if scope == "" { + scope = oldTokenScope } // generate a new token