{"record":{"id":"ebd200323cdc2b37","repo":"Tencent/WeKnora","slug":"oidc-discovery-url-or-explicit-endpoints-are-requi","errorCode":null,"errorMessage":"OIDC discovery_url or explicit endpoints are required","messagePattern":"OIDC discovery_url or explicit endpoints are required","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"internal/application/service/user.go","lineNumber":1485,"sourceCode":"\t}\n\tif err := s.populateOIDCEndpoints(ctx, &cfg); err != nil {\n\t\treturn nil, err\n\t}\n\treturn &cfg, nil\n}\n\nfunc oidcNeedsDiscovery(cfg *config.OIDCAuthConfig) bool {\n\treturn strings.TrimSpace(cfg.AuthorizationEndpoint) == \"\" ||\n\t\tstrings.TrimSpace(cfg.TokenEndpoint) == \"\" ||\n\t\tstrings.TrimSpace(cfg.JwksURI) == \"\" ||\n\t\tstrings.TrimSpace(cfg.IssuerURL) == \"\"\n}\n\nfunc (s *userService) populateOIDCEndpoints(ctx context.Context, cfg *config.OIDCAuthConfig) error {\n\tif oidcNeedsDiscovery(cfg) {\n\t\tif strings.TrimSpace(cfg.DiscoveryURL) == \"\" {\n\t\t\tif strings.TrimSpace(cfg.AuthorizationEndpoint) == \"\" || strings.TrimSpace(cfg.TokenEndpoint) == \"\" {\n\t\t\t\treturn errors.New(\"OIDC discovery_url or explicit endpoints are required\")\n\t\t\t}\n\t\t} else if err := s.applyOIDCDiscoveryDocument(ctx, cfg); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\tif strings.TrimSpace(cfg.AuthorizationEndpoint) == \"\" || strings.TrimSpace(cfg.TokenEndpoint) == \"\" {\n\t\treturn errors.New(\"OIDC discovery document missing required endpoints\")\n\t}\n\treturn validateOIDCEndpoints(cfg)\n}\n\nfunc (s *userService) applyOIDCDiscoveryDocument(ctx context.Context, cfg *config.OIDCAuthConfig) error {\n\tif err := validateOIDCEndpoint(\"discovery\", cfg.DiscoveryURL, true); err != nil {\n\t\treturn err\n\t}\n\n\treq, err := http.NewRequestWithContext(ctx, http.MethodGet, cfg.DiscoveryURL, nil)\n\tif err != nil {","sourceCodeStart":1467,"sourceCodeEnd":1503,"githubUrl":"https://github.com/Tencent/WeKnora/blob/988cbb03305e055d8ebb7d46d9ac6cc0803cd074/internal/application/service/user.go#L1467-L1503","documentation":"Raised in populateOIDCEndpoints when discovery is needed (any of authorization/token/jwks/issuer endpoints blank) but DiscoveryURL is also empty — and explicit endpoints are incomplete too, so there is no way to obtain the missing endpoints. Configuration completeness guard.","triggerScenarios":"Thrown at internal/application/service/user.go:1485 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Set OIDC discovery_url in config, or provide all explicit endpoints (authorization, token, jwks, issuer)","Fix the deployment's OIDC settings and restart"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"988cbb03305e055d8ebb7d46d9ac6cc0803cd074","analyzedAt":"2026-09-02T14:41:08.344Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}