{"record":{"id":"03834516707bcb93","repo":"t8y2/dbx","slug":"unsupported-cassandra-auth-provider-class-s","errorCode":null,"errorMessage":"unsupported Cassandra auth provider class: %s","messagePattern":"unsupported Cassandra auth provider class: (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"agents/drivers/cassandra-go/config_file.go","lineNumber":180,"sourceCode":"\t}\n\tif err := applyHOCONSSL(config, parsed); err != nil {\n\t\treturn err\n\t}\n\treturn applyNativeHOCON(config, parsed)\n}\n\nfunc applyHOCONAuthentication(config *cassandraConfig, parsed *hocon.Config) error {\n\tprefix := javaDriverConfigPrefix + \"advanced.auth-provider.\"\n\tif value, ok, err := hoconString(parsed, prefix+\"class\"); err != nil {\n\t\treturn err\n\t} else if ok {\n\t\tswitch strings.ToLower(simpleClassName(value)) {\n\t\tcase \"plaintextauthprovider\", \"dseplaintextauthprovider\":\n\t\t\tconfig.kerberos.enabled = false\n\t\tcase \"kerberosauthprovider\", \"programmatickerberosauthprovider\", \"dsegssapiauthprovider\":\n\t\t\tconfig.kerberos.enabled = true\n\t\tdefault:\n\t\t\treturn fmt.Errorf(\"unsupported Cassandra auth provider class: %s\", value)\n\t\t}\n\t}\n\tif value, ok, err := hoconString(parsed, prefix+\"username\"); err != nil {\n\t\treturn err\n\t} else if ok {\n\t\tconfig.username = value\n\t}\n\tif value, ok, err := hoconString(parsed, prefix+\"password\"); err != nil {\n\t\treturn err\n\t} else if ok {\n\t\tconfig.password = value\n\t}\n\tif value, ok, err := hoconString(parsed, prefix+\"authorization-id\"); err != nil {\n\t\treturn err\n\t} else if ok {\n\t\tconfig.kerberos.authorizationID = value\n\t}\n\tfor _, path := range []string{prefix + \"sasl-protocol\", prefix + \"service\"} {","sourceCodeStart":162,"sourceCodeEnd":198,"githubUrl":"https://github.com/t8y2/dbx/blob/c0390bff16418b651f4728520d99adf8ce48829a/agents/drivers/cassandra-go/config_file.go#L162-L198","documentation":"applyHOCONAuthentication (config_file.go:180) inspects the `advanced.auth-provider.class` from the Java driver HOCON config and only recognizes PlainTextAuthProvider, DsePlainTextAuthProvider, KerberosAuthProvider, ProgrammaticKerberosAuthProvider, and DseGssApiAuthProvider (case-insensitive simple class name). Any other auth provider class is rejected because the Go driver cannot replicate it. The class comparison uses simpleClassName, so fully qualified names are accepted for supported providers.","triggerScenarios":"A HOCON file sets `datastax-java-driver.advanced.auth-provider.class` to a class other than the five supported ones, e.g. a custom `com.example.MyAuthProvider`, `com.datastax.oss.driver.internal.core.auth.PlainTextAuthProvider` misspelled, or `PropertyBasedAuthProvider`.","commonSituations":"Copying a Java driver config that used a company-custom auth provider; typos like `PlainTextAuthenticator`; using `DseGssApiAuthProvider` misspelled as `DseGSSAPIAuthProvider` is fine (case-insensitive) but `AuthTableBasedAuthProvider` from older DSE versions is not.","solutions":["Change `advanced.auth-provider.class` to one of: PlainTextAuthProvider, DsePlainTextAuthProvider, KerberosAuthProvider, ProgrammaticKerberosAuthProvider, or DseGssApiAuthProvider.","If you were using plain credentials, switch to PlainTextAuthProvider and set advanced.auth-provider.username/password, or use the native dbx.cassandra username/password keys.","If you were using a custom or Kerberos variant provider, reconfigure via the native `dbx.cassandra.kerberos.*` keys instead.","Fix typos in the class name; the check is on the simple class name and is case-insensitive."],"exampleFix":"// before (application.conf)\ndatastax-java-driver {\n  advanced.auth-provider.class = com.example.CustomAuthProvider\n}\n// after\ndatastax-java-driver {\n  advanced.auth-provider.class = com.datastax.oss.driver.internal.core.auth.PlainTextAuthProvider\n}","handlingStrategy":"validation","validationCode":"var supportedAuthProviders = map[string]bool{\n    \"plaintextauthprovider\": true,\n    \"dseplaintextauthprovider\": true,\n    \"kerberosauthprovider\": true,\n    \"programmatickerberosauthprovider\": true,\n    \"dsegssapiauthprovider\": true,\n}\nfunc validateAuthProvider(cfg *hocon.Config) error {\n    const key = \"datastax-java-driver.advanced.auth-provider.class\"\n    if cfg.Get(key) == nil {\n        return nil\n    }\n    v := cfg.GetString(key)\n    simple := v\n    if i := strings.LastIndex(simple, \".\"); i >= 0 {\n        simple = simple[i+1:]\n    }\n    if !supportedAuthProviders[strings.ToLower(simple)] {\n        return fmt.Errorf(\"unsupported auth provider: %s\", v)\n    }\n    return nil\n}","typeGuard":"func isSupportedAuthProvider(class string) bool {\n    simple := class[strings.LastIndex(class, \".\")+1:]\n    switch strings.ToLower(simple) {\n    case \"plaintextauthprovider\", \"dseplaintextauthprovider\",\n        \"kerberosauthprovider\", \"programmatickerberosauthprovider\", \"dsegssapiauthprovider\":\n        return true\n    }\n    return false\n}","tryCatchPattern":"if err := applyCassandraConfigFile(cfgPath); err != nil {\n    if strings.Contains(err.Error(), \"unsupported Cassandra auth provider\") {\n        log.Fatalf(\"use PlainTextAuthProvider or the Kerberos* providers, or configure dbx.cassandra credentials natively\")\n    }\n    return err\n}","preventionTips":["Only use the five supported provider classes in configs shared with Go clients.","For custom auth, configure credentials via native dbx.cassandra keys instead of the Java-driver section.","Keep one canonical, validated application.conf in version control for Go/JVM fleets."],"tags":["cassandra","authentication","hocon","unsupported-feature"],"backgroundTag":"unsupported-config-option","analyzedSha":"c0390bff16418b651f4728520d99adf8ce48829a","analyzedAt":"2026-09-05T23:05:10.900Z","contentChangedAt":"2026-09-05T23:05:10.900Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}