{"record":{"id":"cbfa39e32fe486e1","repo":"SigNoz/signoz","slug":"invalid-input-cbfa39","errorCode":"invalid_input","errorMessage":"root user is not enabled, impersonation identity provider will not be able to resolve any identity","messagePattern":"root user is not enabled, impersonation identity provider will not be able to resolve any identity","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"critical","filePath":"pkg/identn/impersonationidentn/provider.go","lineNumber":39,"sourceCode":"\tuserConfig user.Config\n\n\tmu       sync.RWMutex\n\tidentity *authtypes.Identity\n}\n\nfunc NewFactory(orgGetter organization.Getter, userGetter user.Getter, userConfig user.Config) factory.ProviderFactory[identn.IdentN, identn.Config] {\n\treturn factory.NewProviderFactory(factory.MustNewName(authtypes.IdentNProviderImpersonation.StringValue()), func(ctx context.Context, providerSettings factory.ProviderSettings, config identn.Config) (identn.IdentN, error) {\n\t\treturn New(ctx, providerSettings, config, orgGetter, userGetter, userConfig)\n\t})\n}\n\nfunc New(ctx context.Context, providerSettings factory.ProviderSettings, config identn.Config, orgGetter organization.Getter, userGetter user.Getter, userConfig user.Config) (identn.IdentN, error) {\n\tsettings := factory.NewScopedProviderSettings(providerSettings, \"github.com/SigNoz/signoz/pkg/identn/impersonationidentn\")\n\n\tsettings.Logger().WarnContext(ctx, \"impersonation identity provider is enabled, all requests will impersonate the root user\")\n\n\tif !userConfig.Root.Enabled {\n\t\treturn nil, errors.New(errors.TypeInvalidInput, errors.CodeInvalidInput, \"root user is not enabled, impersonation identity provider will not be able to resolve any identity\")\n\t}\n\n\treturn &provider{\n\t\tconfig:     config,\n\t\tsettings:   settings,\n\t\torgGetter:  orgGetter,\n\t\tuserGetter: userGetter,\n\t\tuserConfig: userConfig,\n\t}, nil\n}\n\nfunc (provider *provider) Name() authtypes.IdentNProvider {\n\treturn authtypes.IdentNProviderImpersonation\n}\n\nfunc (provider *provider) Test(_ *http.Request) bool {\n\treturn true\n}","sourceCodeStart":21,"sourceCodeEnd":57,"githubUrl":"https://github.com/SigNoz/signoz/blob/5069bf80b08f1f00d7e014eccc09902f9871004f/pkg/identn/impersonationidentn/provider.go#L21-L57","documentation":"The impersonation identity provider constructor requires the root user to be enabled, since every impersonated request resolves to the root user's identity. Without user.root.enabled=true, construction fails at startup.","triggerScenarios":"Configuring identn provider as impersonationidentn while user.root.enabled is false or unset.","commonSituations":"Local/dev setups enabling impersonation for easy testing without enabling the root user; fresh installs copying partial config snippets.","solutions":["Set user.root.enabled=true (and provide root user credentials/org config) in settings","Or switch to a different identn provider","Validate config with the root-user section present before deploy"],"exampleFix":"# before\nidentn:\n  provider: impersonationidentn\nuser:\n  root:\n    enabled: false\n# after\nidentn:\n  provider: impersonationidentn\nuser:\n  root:\n    enabled: true","handlingStrategy":"validation","validationCode":"if identnCfg.Provider == \"impersonationidentn\" && !userCfg.Root.Enabled { return fmt.Errorf(\"enable user.root for impersonation\") }","typeGuard":"func canUseImpersonation(idcfg identn.Config, ucfg user.Config) bool { return idcfg.Provider == \"impersonationidentn\" && ucfg.Root.Enabled }","tryCatchPattern":"p, err := impersonationidentn.New(ctx, settings, idcfg, og, ug, ucfg)\nif err != nil { log.Fatalf(\"identn init failed: %v\", err) }","preventionTips":["Always pair impersonation config with root user enablement","Smoke-test config loading before deploying"],"tags":["configuration","startup","identity","impersonation","root-user"],"backgroundTag":"invalid-configuration","analyzedSha":"5069bf80b08f1f00d7e014eccc09902f9871004f","analyzedAt":"2026-08-28T06:22:12.824Z","schemaVersion":2},"datasetVersion":"2026-08-28T11:17:15.048Z"}