Azure / Azure/data-api-builder
[Enh]: Support Entra in Local Containers with `SQL_ACCESS_TOKEN`
- Langage dominant
- C#
- Étoiles
- 1.5k
- Forks
- 370
- Merge moyen
- 3 j 22 h
- PR mergées (30 j)
- 9
Description
## What
Allow Data API builder to read a development token from `SQL_ACCESS_TOKEN` and assign it to `SqlConnection.AccessToken`.
> [!IMPORTANT]
> This feature is explicitly scoped to development mode. Never use in production.
## Why
When DAB runs in Docker, normal Entra credential chains often fail. Some SQL endpoints, such as Fabric SQL, require token authentication. This feature provides a development token override so containerized development works without changing production authentication.
## How
- No change to the configuration file.
- No change to the command-line.
### At connection creation:
```
if (development mode &&
not OBO &&
Entra authentication &&
SQL_ACCESS_TOKEN exists)
{
connection.AccessToken = SQL_ACCESS_TOKEN
connection.Pooling = false
}
```
> [!IMPORTANT]
> The env var is re-read on every connection open (never cached).
> [!NOTE]
> In a pooled scenario, you might not see a clean error. So, we disable pooling.
### Logging
When properly invoked:
```
[INFO] Using SQL_ACCESS_TOKEN for connection (development mode)
```
When prerequisites are not met:
```
[WARN] SQL_ACCESS_TOKEN set but requirements are not met — token ignored
```
### Rules
* only when the connection string uses Microsoft Entra authentication: `Active Directory Default`, `Active Directory Managed Identity`, `Active Directory Workload Identity` only.
* only when the `OBO` flow is not being used
* only when `SQL_ACCESS_TOKEN` exists
* only when `runtime.host.mode=development`
* always allow the engine to start
* let the database raise connection errors if the token is invalid
* do not cache the token, re-read it every time a connection is opened
Guide de contribution
Ouvrir le guide de contribution
Piste de recherche
Commencez par le chemin de création des connexions et suivez les vérifications du mode développement, de OBO et de l’authentification Microsoft Entra. Vérifiez que SQL_ACCESS_TOKEN est relu pour chaque connexion, que le pooling est désactivé lorsqu’il est utilisé et que l’info ou l’avertissement spécifié est journalisé. Confirmez que les prérequis non satisfaits n’empêchent pas le démarrage et que les jetons invalides sont laissés à la base de données, qui les rejettera.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- azure, csharp, sql
- Domaine
- authentication, backend-api-design, databases
- Type d'issue
- Fonctionnalité
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 48/100