Anmerkung
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen, dich anzumelden oder die Verzeichnisse zu wechseln.
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen , die Verzeichnisse 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.