{"record":{"id":"e369a82f45688bc5","repo":"dapr/dapr","slug":"jwks-validator-not-ready","errorCode":null,"errorMessage":"jwks validator not ready","messagePattern":"jwks validator not ready","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/sentry/server/validator/jwks/jwks.go","lineNumber":107,"sourceCode":"\t\tj.htarget.Ready()\n\t}()\n\n\t// Start the cache. Note this is a blocking call\n\terr := j.cache.Start(ctx)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\nfunc (j *jwks) Validate(ctx context.Context, req *sentryv1pb.SignCertificateRequest) (validator.ValidateResult, error) {\n\tif req.GetToken() == \"\" {\n\t\treturn validator.ValidateResult{}, errors.New(\"the request does not contain a token\")\n\t}\n\n\tif err := j.cache.WaitForCacheReady(ctx); err != nil {\n\t\treturn validator.ValidateResult{}, errors.New(\"jwks validator not ready\")\n\t}\n\n\t// Validate the internal request\n\t// This also returns the trust domain.\n\ttd, err := internal.Validate(ctx, req)\n\tif err != nil {\n\t\treturn validator.ValidateResult{}, err\n\t}\n\n\t// Construct the expected value for the subject, which is the SPIFFE ID of the requestor\n\tsub, err := spiffeid.FromSegments(td, \"ns\", req.GetNamespace(), req.GetId())\n\tif err != nil {\n\t\treturn validator.ValidateResult{}, fmt.Errorf(\"failed to construct SPIFFE ID for requestor: %w\", err)\n\t}\n\n\t// Validate the authorization token\n\t_, err = jwt.Parse([]byte(req.GetToken()),\n\t\tjwt.WithKeySet(j.cache.KeySet(), jws.WithInferAlgorithmFromKey(true)),","sourceCodeStart":89,"sourceCodeEnd":125,"githubUrl":"https://github.com/dapr/dapr/blob/74ad41702745709bb15fe2114ff693b8c59bc3cc/pkg/sentry/server/validator/jwks/jwks.go#L89-L125","documentation":"Error \"jwks validator not ready\" thrown in dapr/dapr.","triggerScenarios":"Thrown at pkg/sentry/server/validator/jwks/jwks.go:107 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":"74ad41702745709bb15fe2114ff693b8c59bc3cc","analyzedAt":"2026-08-16T04:22:26.543Z","schemaVersion":2},"datasetVersion":"2026-08-16T08:17:34.114Z"}