Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Det här .NET 8-konsolprogrammet visar hur du ansluter till Azure Managed Redis med hjälp av Microsoft Entra ID-autentisering . Huvudvärdet är lösenordslös autentisering med automatisk tokenuppdatering, vilket ger en säker och modern metod för Redis-anslutning.
Hoppa till koden på GitHub
Klona lagringsplatsen Microsoft.Azure.StackExchangeRedis på GitHub.
Förutsättningar
- .NET 8.0 SDK.
- En Azure Managed Redis-instans som har etablerats i din Azure-prenumeration.
- Azure-användaren eller tjänstens huvudnamn måste läggas till som Redis-användare i cacheminnet. I Azure-portalen går du till Autentisering på resursmenyn, väljer Användaren eller tjänstens huvudnamn och lägger till din identitet.
- Azure CLI för lokal utvecklingsautentisering. Azure CLI
Nödvändiga NuGet-paket
| Package | Avsikt |
|---|---|
Microsoft.Azure.StackExchangeRedis |
Tilläggsbibliotek som lägger till Microsoft Entra ID-autentisering till StackExchange.Redis |
Azure.Identity |
Tillhandahåller DefaultAzureCredential och andra Azure-identitetsimplementeringar |
StackExchange.Redis |
Den underliggande Redis-klienten (som dras in som ett beroende) |
Microsoft.Extensions.Logging.Console |
Konsolloggning för diagnostik |
Autentiseringsmetoder
Tillägget stöder flera identitetstyper, var och en med en motsvarande ConfigureForAzure*() tilläggsmetod:
DefaultAzureCredential– Den rekommenderade metoden. Den kedjar flera källor för autentiseringsuppgifter (miljövariabler, hanterad identitet, Azure CLI-autentisering, Visual Studio-autentiseringsuppgifter med mera) och använder den första som fungerar. Det är perfekt för kod som körs både lokalt och i Azure.User-Assigned hanterad identitet – För appar som är värdade i Azure där du uttryckligen anger vilken hanterad identitet som ska användas genom att ange dess klient-ID.
Hantera systemtilldelad identitet – För Azure-värdar appar som använder den identitet som tilldelas resursen automatiskt.
Tjänstens huvudprincip (hemlighet) – Klient-ID, hyresgästs-ID och hemlighet för automatiserade eller CI-scenarier.
Tjänstens huvudnamn (certifikat) – Klient-ID, klientorganisation-ID och X.509-certifikat för högre säkerhet.
Så fungerar DefaultAzureCredential lokalt
När du utvecklar lokalt DefaultAzureCredential försöker du autentisera med hjälp av följande metoder:
az login
Den här metoden loggar in dig på Azure CLI med ditt Microsoft Entra-ID-konto. SDK identifierar dina cachelagrade autentiseringsuppgifter och använder dem för att hämta token. Du måste konfigurera din Microsoft Entra-ID-användare som en Redis-användare på Azure Managed Redis-resursen via autentiseringen på resursmenyn i Azure-portalen.
Viktiga implementeringsmönster
Anslutningskonfiguration:
ConfigurationOptions configurationOptions = new()
{
Protocol = RedisProtocol.Resp3, // Recommended for seamless re-auth
LoggerFactory = loggerFactory,
AbortOnConnectFail = true, // Fail fast (use false in production)
BacklogPolicy = BacklogPolicy.FailFast
};
Konfiguration av Entra-ID:
await configurationOptions.ConfigureForAzureWithTokenCredentialAsync(new DefaultAzureCredential());
var connection = await ConnectionMultiplexer.ConnectAsync(configurationOptions);
Grundläggande Redis-åtgärder:
var database = connection.GetDatabase();
await database.StringSetAsync("key", "value");
var value = await database.StringGetAsync("key");
Livscykel för token och automatisk omautentisering
Tillägget hanterar automatiskt OAuth2-tokens livscykel:
- Första förvärvet – Den hämtar en token innan den ansluter.
- Proaktiv uppdatering – Innan token upphör att gälla (ungefär en timme) får den en ny token i bakgrunden.
- Återautentisering – Anslutningen med den nya token autentiseras igen utan att kommandona släpps.
För observerbarhet kan du prenumerera på tokenhändelser:
| Event | Avsikt |
|---|---|
TokenRefreshed |
En ny token har förvärvats |
TokenRefreshFailed |
Tokenuppdateringen misslyckades (använder fortfarande gammal token) |
ConnectionReauthenticated |
Anslutningen har autentiserats igen |
ConnectionReauthenticationFailed |
Ny autentisering misslyckades för en anslutning |
RESP3 jämfört med RESP2-protokollet
Exemplet använder RESP3 (Protocol = RedisProtocol.Resp3) eftersom:
- RESP2 skapar separata anslutningar för interaktiva kommandon och pub/sub.
- Endast den interaktiva anslutningen autentiseras proaktivt igen.
- Pub-/underanslutningar stängs när deras token upphör att gälla, vilket orsakar korta avbrott.
- RESP3 multiplexar allt på en anslutning och undviker dessa störningar.
Krav för Azure
- Skapa en Azure Managed Redis-instans.
- Aktivera Microsoft Entra-ID-autentisering under "Konfiguration av dataåtkomst".
- Lägg till din identitet som Redis-användare med lämpliga behörigheter (dataägare, datadeltagare och så vidare).
-
Köra
az loginlokalt för att autentisera med ditt Entra-ID-konto.
Grundläggande Redis-begrepp
| Begrepp | Description |
|---|---|
ConnectionMultiplexer |
Singleton, trådsäker anslutningspool till Redis. Skapa den en gång och återanvänd den för appens livslängd. |
IDatabase |
Gränssnitt för att köra kommandon (StringGet, StringSet, HashGetoch så vidare). |
| Ändpunktsformat |
endpoint:10000 (TLS) för Azure Managed Redis. |
Genomföra exemplet
az login
cd sample
dotnet run
Ange redis-slutpunkten (till exempel <your-redis-name>.<region>.redis.azure.net:10000), välj autentiseringsmetod 1 (DefaultAzureCredential) och se + tecknen skrivas ut varje sekund när kommandona lyckas. Låt den köras i mer än 60 minuter för att verifiera att automatisk tokenuppdatering fungerar.
Produktionsöverväganden
| Inställning | Exempelvärde | Produktionsvärde |
|---|---|---|
AbortOnConnectFail |
true |
false (försök igen vid start) |
BacklogPolicy |
FailFast |
Default (kökommandon vid tillfälliga fel) |
| Anslutningslivslängd | Demoloop | Singleton via DI (IConnectionMultiplexer) |
Det här exemplet innehåller en fullständig referensimplementering för säker, lösenordslös Entra-ID-autentisering i alla .NET-program som använder Azure Managed Redis.