OAuth M2M fails with scoped secrets because all-apis is always requested
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 76/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Activo
- Stack tecnológico
- go
- Área
- authentication, backend
Línea de trabajo
Comienza con NewAuthenticatorWithScopes y GetScopes, donde el issue informa de que all-apis se añade incondicionalmente. Reproduce el flujo de scoped-secret con el scope SQL proporcionado y verifica que un scope no vacío proporcionado por el llamador llega a la solicitud del token sin requerir all-apis; confirma que la conexión SQL se realiza correctamente.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Hi team! We are having trouble with service principal authentication following the introduction of scoped OAuth secrets. The M2M authenticator in databricks-sql-go unconditionally requests all-apis, but all-apis is no longer the default in the UI.
Steps to reproduce
- Create a Databricks service principal with access to a SQL warehouse.
- Generate an OAuth secret restricted to the
sqlscope. - Verify the credential directly:
curl --request POST \
--url "https://<workspace-host>/oidc/v1/token" \
--user "<client-id>:<client-secret>" \
--data-urlencode "grant_type=client_credentials" \
--data-urlencode "scope=sql"
This succeeds and returns a token with scope sql.
- Connect using the Go driver's M2M authenticator:
authenticator := m2m.NewAuthenticator(
clientID,
clientSecret,
workspaceHost,
)
connector, err := dbsql.NewConnector(
dbsql.WithServerHostname(workspaceHost),
dbsql.WithPort(443),
dbsql.WithHTTPPath(warehouseHTTPPath),
dbsql.WithAuthenticator(authenticator),
)
if err != nil {
return err
}
db := sql.OpenDB(connector)
defer db.Close()
var result int
err = db.QueryRowContext(context.Background(), "SELECT 1").Scan(&result)
The connection fails before opening the SQL session:
oauth2: "access_denied" "Scopes 'all-apis' are not assigned to the client <redacted>"
Root cause
NewAuthenticatorWithScopes calls GetScopes, which always appends all-apis:
func GetScopes(hostName string, scopes []string) []string {
if !oauth.HasScope(scopes, "all-apis") {
scopes = append(scopes, "all-apis")
}
return scopes
}
The code comments say the behavior matches the underlying kernel unconditionally requiring all-apis.
Suggested fix: Investigate whether NewAuthenticatorWithScopes can pass through nonempty caller-provided scopes.
Thank you!
- Lenguaje dominante
- Go
- Estrellas
- 53
- Forks
- 66
- Merge medio
- 7 h 57 min
- PR fusionados (30 d)
- 16
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de databricks/databricks-sql-go
-
Dificultad 3/5 1-2 días Aptitud para principiantes 55/100
databricks/databricks-sql-go#481 ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 52/100
databricks/databricks-sql-go#480 ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
databricks/databricks-sql-go#475 · 1 comentario ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 65/100
databricks/databricks-sql-go#474 ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 62/100
databricks/databricks-sql-go#473 ·
Todos los issues de databricks/databricks-sql-go
Issues similares
-
nix: vendorHash is outdated Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
-
Bob Shell support Abiertoenhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
santhosh-tekuri/jsonschema#276 ·