{"record":{"id":"4304be3c4813b1b8","repo":"goharbor/harbor","slug":"failed-to-refresh-token-username-s-error-v","errorCode":null,"errorMessage":"failed to refresh token, username: %s, error: %v","messagePattern":"failed to refresh token, username: (.+?), error: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/pkg/oidc/secret.go","lineNumber":120,"sourceCode":"\t\treturn nil, fmt.Errorf(\"failed to decrypt secret from DB: %v\", err)\n\t}\n\tif subtle.ConstantTimeCompare([]byte(secret), []byte(plainSecret)) != 1 {\n\t\treturn nil, verifyError(fmt.Errorf(\"secret mismatch, username: %s\", username))\n\t}\n\ttokenStr, err := utils.ReversibleDecrypt(oidcUser.Token, key)\n\tif err != nil {\n\t\treturn nil, verifyError(err)\n\t}\n\ttoken := &Token{}\n\terr = json.Unmarshal(([]byte)(tokenStr), token)\n\tif err != nil {\n\t\treturn nil, verifyError(err)\n\t}\n\tif !token.Valid() {\n\t\tlog.Debug(\"Refreshing token\")\n\t\ttoken, err = refreshToken(ctx, token)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to refresh token, username: %s, error: %v\", username, err)\n\t\t}\n\t\ttb, err := json.Marshal(token)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to encode the refreshed token, error: %v\", err)\n\t\t}\n\t\tencToken, _ := utils.ReversibleEncrypt(string(tb), key)\n\t\toidcUser.Token = encToken\n\t\t// only updates the token column of the record\n\t\terr = dm.metaDao.Update(ctx, oidcUser, \"token\")\n\t\tif err != nil {\n\t\t\tlog.Errorf(\"Failed to persist token, user id: %d, error: %v\", oidcUser.UserID, err)\n\t\t}\n\t\tlog.Debug(\"Token refreshed and persisted\")\n\t}\n\tinfo, err := UserInfoFromToken(ctx, token)\n\tif err != nil {\n\t\treturn nil, verifyError(err)\n\t}","sourceCodeStart":102,"sourceCodeEnd":138,"githubUrl":"https://github.com/goharbor/harbor/blob/7b2fd08cc568955cca339afeefab27372840d936/src/pkg/oidc/secret.go#L102-L138","documentation":"Error \"failed to refresh token, username: %s, error: %v\" thrown in goharbor/harbor.","triggerScenarios":"Thrown at src/pkg/oidc/secret.go:120 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"7b2fd08cc568955cca339afeefab27372840d936","analyzedAt":"2026-08-16T00:00:10.961Z","schemaVersion":2},"datasetVersion":"2026-08-16T03:17:38.424Z"}