Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Diese .NET 8-Konsolenanwendung veranschaulicht, wie Sie mithilfe der Microsoft Entra ID-Authentifizierung eine Verbindung mit Azure Managed Redis herstellen. Das Kernwertversprechen ist die kennwortlose Authentifizierung mit automatischer Tokenaktualisierung und bietet einen sicheren und modernen Ansatz für Redis-Konnektivität.
Direktes Navigieren zum Code auf GitHub
Klonen Sie das Microsoft.Azure.StackExchangeRedis-Repository auf GitHub.
Voraussetzungen
- .NET 8.0 SDK.
- Eine Azure Managed Redis-Instanz , die in Ihrem Azure-Abonnement bereitgestellt wird.
- Ihr Azure-Benutzer oder Dienstprinzipal muss als Redis-Benutzer im Cache hinzugefügt werden. Wechseln Sie im Azure-Portal zum Menü " Ressource" zur Authentifizierung , wählen Sie "Benutzer" oder "Dienstprinzipal" aus, und fügen Sie Ihre Identität hinzu.
- Azure CLI für die lokale Entwicklungsauthentifizierung.
Erforderliche NuGet-Pakete
| Package | Zweck |
|---|---|
Microsoft.Azure.StackExchangeRedis |
Erweiterungsbibliothek, die die Microsoft Entra ID-Authentifizierung zu StackExchange.Redis hinzufügt |
Azure.Identity |
Stellt DefaultAzureCredential- und andere Azure-Identitätsimplementierungen bereit. |
StackExchange.Redis |
Der zugrunde liegende Redis-Client (als Abhängigkeit eingebunden) |
Microsoft.Extensions.Logging.Console |
Konsolen-Logging für Diagnose |
Authentifizierungsmethoden
Die Erweiterung unterstützt mehrere Identitätstypen, jeweils mit einer entsprechenden ConfigureForAzure*() Erweiterungsmethode:
DefaultAzureCredential- Der empfohlene Ansatz. Sie verkettet mehrere Anmeldeinformationsquellen (Umgebungsvariablen, verwaltete Identität, Azure CLI-Authentifizierung, Visual Studio-Anmeldeinformationen und mehr) und verwendet die erste, die funktioniert. Es ist ideal für Code, der sowohl lokal als auch in Azure ausgeführt wird.Manuell zugewiesene verwaltete Identität – Für in Azure gehostete Apps, bei denen Sie explizit festlegen, welche verwaltete Identität verwendet werden soll, indem Sie deren Client-ID bereitstellen.
System-Assigned Managed Identity – Für von Azure gehostete Apps, die die Identity verwenden, die der Ressource automatisch zugewiesen wird.
Dienstprinzipal (Geheimer Schlüssel) – Client-ID, Mandanten-ID und geheimer Schlüssel für automatisierte oder CI-Szenarien.
Dienstprinzipal (Zertifikat) – Client-ID, Mandanten-ID und X.509-Zertifikat für höhere Sicherheit.
Wie DefaultAzureCredential lokal funktioniert
Wenn Sie lokal entwickeln, unternimmt DefaultAzureCredential den Versuch, sich mithilfe der folgenden Methoden zu authentifizieren:
az login
Diese Methode meldet Sie mithilfe Ihres Microsoft Entra ID-Kontos bei der Azure CLI an. Das SDK erkennt Ihre zwischengespeicherten Anmeldeinformationen und verwendet sie zum Abrufen von Token. Sie müssen Ihren Microsoft Entra ID-Benutzer als Redis-Benutzer in der Azure Managed Redis-Ressource über die Authentifizierung im Menü "Ressource" im Azure-Portal konfigurieren.
Wichtige Implementierungsmuster
Verbindungskonfiguration:
ConfigurationOptions configurationOptions = new()
{
Protocol = RedisProtocol.Resp3, // Recommended for seamless re-auth
LoggerFactory = loggerFactory,
AbortOnConnectFail = true, // Fail fast (use false in production)
BacklogPolicy = BacklogPolicy.FailFast
};
Entra-ID-Setup:
await configurationOptions.ConfigureForAzureWithTokenCredentialAsync(new DefaultAzureCredential());
var connection = await ConnectionMultiplexer.ConnectAsync(configurationOptions);
Grundlegende Redis-Vorgänge:
var database = connection.GetDatabase();
await database.StringSetAsync("key", "value");
var value = await database.StringGetAsync("key");
Tokenlebenszyklus und automatische erneute Authentifizierung
Die Erweiterung behandelt automatisch den OAuth2-Tokenlebenszyklus:
- Anfänglicher Erwerb – Es erhält ein Token, bevor eine Verbindung hergestellt wird.
- Proaktive Aktualisierung – Bevor das Token abläuft (ca. eine Stunde), erhält es ein neues Token im Hintergrund.
- Erneute Authentifizierung – Die Verbindung mit dem neuen Token wird erneut authentifiziert, ohne Befehle ablegen zu müssen.
Zur Beobachtbarkeit können Sie Token-Ereignisse abonnieren.
| Event | Zweck |
|---|---|
TokenRefreshed |
Neues Token erworben |
TokenRefreshFailed |
Fehler bei der Tokenaktualisierung (weiterhin mit altem Token) |
ConnectionReauthenticated |
Die Verbindung wurde erfolgreich erneut authentifiziert. |
ConnectionReauthenticationFailed |
Fehler bei der erneuten Authentifizierung für eine Verbindung. |
RESP3 vs. RESP2-Protokoll
Im Beispiel wird RESP3 (Protocol = RedisProtocol.Resp3) verwendet, da:
- RESP2 erstellt separate Verbindungen für interaktive Befehle und pub/sub.
- Nur die interaktive Verbindung wird proaktiv erneut authentifiziert.
- Verbindungen im Pub/Sub-System werden geschlossen, wenn ihr Token abläuft, was kurze Unterbrechungen verursacht.
- RESP3 multiplexiert alles über eine einzige Verbindung und vermeidet so diese Störungen.
Voraussetzungen für Azure
- Erstellen Sie eine Azure Managed Redis-Instanz.
- Aktivieren Sie die Microsoft Entra ID-Authentifizierung unter "Datenzugriffskonfiguration".
- Fügen Sie Ihre Identität als Redis-Benutzer mit den entsprechenden Berechtigungen hinzu (Datenbesitzer, Datenmitwirkender usw.).
-
Ausführen
az loginlokal zur Authentifizierung mit Ihrem Entra ID-Konto.
Grundlegende Redis-Konzepte
| Begriff | Description |
|---|---|
ConnectionMultiplexer |
Singleton, threadsicherer Verbindungspool mit Redis. Erstellen Sie es einmal, und verwenden Sie sie für die App-Lebensdauer wieder. |
IDatabase |
Schnittstelle zum Ausführen von Befehlen (StringGet, StringSet, HashGetusw.). |
| Endpunktformat |
endpoint:10000 (TLS) für azure Managed Redis. |
Ausführen des Beispiels
az login
cd sample
dotnet run
Geben Sie Ihren Redis-Endpunkt ein (z. B <your-redis-name>.<region>.redis.azure.net:10000. ), wählen Sie die Authentifizierungsmethode 1 (DefaultAzureCredential) aus, und beobachten Sie, wie die + Zeichen alle Sekunde gedruckt werden, wenn Befehle erfolgreich sind. Lassen Sie es mehr als 60 Minuten laufen, um zu überprüfen, ob die automatische Token-Aktualisierung funktioniert.
Produktionsüberlegungen
| Setting | Beispielwert | Produktionswert |
|---|---|---|
AbortOnConnectFail |
true |
false (Wiederholen Sie den Startvorgang) |
BacklogPolicy |
FailFast |
Default (Warteschlangenbefehle während vorübergehender Fehler) |
| Verbindungslebensdauer | Demoschleife | Singleton über DI (IConnectionMultiplexer) |
Dieses Beispiel enthält eine vollständige Referenzimplementierung für die sichere, kennwortlose Entra-ID-Authentifizierung in jeder .NET-Anwendung, die Azure Managed Redis verwendet.