Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cette application console .NET 8 montre comment se connecter à Azure Managed Redis à l’aide de l’authentification Microsoft Entra ID . La proposition de valeur principale est l’authentification sans mot de passe avec l’actualisation automatique des jetons, fournissant une approche sécurisée et moderne de la connectivité Redis.
Passer au code sur GitHub
Clonez le dépôt Microsoft.Azure.StackExchangeRedis sur GitHub.
Prerequisites
- KIT SDK .NET 8.0.
- Une instance Redis managée Azure provisionnée dans votre abonnement Azure.
- Votre utilisateur ou principal de service Azure doit être ajouté en tant qu’utilisateur Redis dans le cache. Dans le portail Azure, accédez à l’authentification dans le menu Ressources, sélectionnez Utilisateur ou principal de service, puis ajoutez votre identité.
- Azure CLI pour l'authentification locale de développement.
Packages NuGet requis
| Package | Objectif |
|---|---|
Microsoft.Azure.StackExchangeRedis |
Bibliothèque d’extensions qui ajoute l’authentification Microsoft Entra ID à StackExchange.Redis |
Azure.Identity |
Fournit DefaultAzureCredential et d’autres implémentations d’identité Azure |
StackExchange.Redis |
Le client Redis sous-jacent (incorporé en tant que dépendance) |
Microsoft.Extensions.Logging.Console |
Enregistrement des logs de console pour les diagnostics |
Méthodes d’authentification
L’extension prend en charge plusieurs types d’identités, chacun avec une méthode d’extension correspondante ConfigureForAzure*() :
DefaultAzureCredential- Approche recommandée. Il chaîne plusieurs sources d’informations d’identification (variables d’environnement, identité managée, authentification Azure CLI, informations d’identification Visual Studio, etc.) et utilise le premier qui fonctionne. Il est idéal pour le code qui s’exécute localement et dans Azure.Identité managée assignée par l'utilisateur - pour les applications hébergées par Azure où vous spécifiez explicitement l’identité managée à utiliser en fournissant son ID client.
Identité managée attribuée par le système - pour les applications hébergées sur Azure qui utilisent l’identité automatiquement affectée à la ressource.
Principal de service (secret) : ID de client, ID de locataire et secret pour les scénarios automatisés ou d’intégration continue (CI).
Service Principal (Certificat) - ID client, ID de locataire et certificat X.509 pour une sécurité plus élevée.
Comment DefaultAzureCredential fonctionne localement
Lorsque vous développez localement, DefaultAzureCredential tente de s’authentifier à l’aide des méthodes suivantes :
az login
Cette méthode vous connecte à Azure CLI à l’aide de votre compte Microsoft Entra ID. Le Kit de développement logiciel (SDK) détecte vos informations d’identification mises en cache et les utilise pour obtenir des jetons. Vous devez configurer votre utilisateur Microsoft Entra ID en tant qu’utilisateur Redis sur la ressource Redis Azure managée via l’option Authentification dans le menu Ressource du portail Azure.
Modèles d’implémentation clés
Configuration de la connexion :
ConfigurationOptions configurationOptions = new()
{
Protocol = RedisProtocol.Resp3, // Recommended for seamless re-auth
LoggerFactory = loggerFactory,
AbortOnConnectFail = true, // Fail fast (use false in production)
BacklogPolicy = BacklogPolicy.FailFast
};
Configuration de l’ID Entra :
await configurationOptions.ConfigureForAzureWithTokenCredentialAsync(new DefaultAzureCredential());
var connection = await ConnectionMultiplexer.ConnectAsync(configurationOptions);
Opérations Redis de base :
var database = connection.GetDatabase();
await database.StringSetAsync("key", "value");
var value = await database.StringGetAsync("key");
Cycle de vie des jetons et réauthentification automatique
L’extension gère automatiquement le cycle de vie des jetons OAuth2 :
- Acquisition initiale : elle obtient un jeton avant de se connecter.
- Actualisation proactive : avant l’expiration du jeton (environ une heure), il obtient un nouveau jeton en arrière-plan.
- Réauthentification : elle authentifie à nouveau la connexion avec le nouveau jeton sans supprimer de commandes.
Pour l’observabilité, vous pouvez vous abonner aux événements liés aux jetons :
| Événement | Objectif |
|---|---|
TokenRefreshed |
Nouveau jeton acquis |
TokenRefreshFailed |
Échec de l'actualisation du jeton (l'ancien jeton est toujours utilisé) |
ConnectionReauthenticated |
Connexion correctement authentifiée |
ConnectionReauthenticationFailed |
Échec de la ré-authentification pour une connexion |
Protocole RESP3 et RESP2
L’exemple utilise RESP3 (Protocol = RedisProtocol.Resp3) car :
- RESP2 crée des connexions distinctes pour les commandes interactives et pub/sub.
- Seule la connexion interactive est authentifiée de manière proactive.
- Les connexions pub/sub se ferment à l’expiration de leur jeton, provoquant de courtes interruptions.
- RESP3 multiplexe tout sur une connexion, ce qui évite ces interruptions.
Conditions préalables pour Azure
- Créez une instance Redis managée Azure.
- Activez l’authentification d’ID Microsoft Entra sous « Configuration de l’accès aux données ».
- Ajoutez votre identité en tant qu’utilisateur Redis avec les autorisations appropriées (Propriétaire des données, Contributeur de données, etc.).
-
Courir
az loginlocalement pour vous authentifier auprès de votre compte Entra ID.
Concepts de base de Redis
| Concept | Descriptif |
|---|---|
ConnectionMultiplexer |
Un pool de connexions Redis, sécurisé pour les threads et implémenté en singleton. Créez-le une fois et réutilisez-le pour la durée de vie de l’application. |
IDatabase |
Interface pour l’exécution de commandes (StringGet, StringSet, HashGetet ainsi de suite). |
| Format du point de terminaison |
endpoint:10000 (TLS) pour Azure Managed Redis. |
Exécution de l’exemple
az login
cd sample
dotnet run
Entrez votre point de terminaison Redis (par exemple, <your-redis-name>.<region>.redis.azure.net:10000), choisissez la méthode d’authentification 1 (DefaultAzureCredential) et regardez les + caractères imprimer chaque seconde à mesure que les commandes réussissent. Laissez-le s’exécuter pendant plus de 60 minutes pour vérifier que l’actualisation automatique des jetons fonctionne.
Considérations relatives à la production
| Réglage | Valeur d'échantillon | Valeur de production |
|---|---|---|
AbortOnConnectFail |
true |
false (réessayez au démarrage) |
BacklogPolicy |
FailFast |
Default (commandes de file d’attente pendant les échecs temporaires) |
| Durée de vie de la connexion | Boucle de démonstration | Singleton via DI (IConnectionMultiplexer) |
Cet exemple fournit une implémentation de référence complète pour l’authentification d’ID Entra sans mot de passe sécurisée dans toute application .NET qui utilise Azure Managed Redis.