Sdílet prostřednictvím


Rychlý start: Použití Azure Managed Redis v .NET Core

Tato konzolová aplikace .NET 8 ukazuje, jak se připojit ke službě Azure Managed Redis pomocí ověřování Microsoft Entra ID . Návrh základní hodnoty je ověřování bez hesla s automatickým obnovením tokenů, které poskytuje zabezpečený a moderní přístup k připojení k Redis.

Přeskočit na kód na GitHubu

Naklonujte úložiště Microsoft.Azure.StackExchangeRedis na GitHubu.

Požadavky

  • .NET 8.0 SDK.
  • Spravovaná instance Azure Redis zřízená ve vašem předplatném Azure.
  • Váš uživatel nebo služební objekt Azure musí být přidán jako uživatel služby Redis v mezipaměti. Na Azure Portal přejděte do Ověřování v nabídce prostředků, vyberte Uživatele nebo instanční objekt a přidejte svoji identitu.
  • Azure CLI pro ověřování pro místní vývoj Azure CLI

Požadované balíčky NuGet

Package Účel
Microsoft.Azure.StackExchangeRedis Knihovna rozšíření, která přidává ověřování pomocí Microsoft Entra ID do StackExchange.Redis
Azure.Identity Poskytuje DefaultAzureCredential a další implementace identit Azure
StackExchange.Redis Základní klient Redis (započítaný jako závislost)
Microsoft.Extensions.Logging.Console Záznam do konzole pro účely diagnostiky

Metody ověřování

Rozšíření podporuje více typů identit, z nichž každá má odpovídající ConfigureForAzure*() metodu rozšíření:

  1. DefaultAzureCredential - Doporučený přístup. Provádí zřetězení několika zdrojů přihlašovacích údajů (proměnné prostředí, spravovaná identita, ověřování Azure CLI, přihlašovací údaje sady Visual Studio a další) a použije první z nich, který funguje. Je ideální pro kód, který běží místně i v Azure.

  2. User-Assigned Managed Identity – pro aplikace hostované v Azure, ve kterých explicitně zvolíte, kterou spravovanou identitu použít, a zadáte její ID klienta.

  3. Systémem přiřazená spravovaná identita – pro aplikace hostované v Azure, které používají identitu automaticky přiřazenou k prostředku.

  4. Služební principál (tajemství) – ID klienta, ID tenanta a tajemství pro automatizované scénáře nebo scénáře kontinuální integrace (CI).

  5. Service Principal (Certifikát) – ID klienta, ID tenanta a X.509 certifikát pro zvýšenou bezpečnost.

Jak DefaultAzureCredential funguje místně

Při místním DefaultAzureCredential vývoji se pokusí o ověření pomocí následujících metod:

az login

Tato metoda vás přihlásí k Azure CLI pomocí účtu Microsoft Entra ID. Sada SDK rozpozná vaše přihlašovací údaje uložené v mezipaměti a použije je k získání tokenů. Uživatele Microsoft Entra ID musíte nakonfigurovat jako uživatele Redis na prostředku Azure Managed Redis prostřednictvím ověřování v nabídce Prostředek na webu Azure Portal.

Klíčové vzory implementace

Konfigurace připojení:

ConfigurationOptions configurationOptions = new()
{
    Protocol = RedisProtocol.Resp3,  // Recommended for seamless re-auth
    LoggerFactory = loggerFactory,
    AbortOnConnectFail = true,       // Fail fast (use false in production)
    BacklogPolicy = BacklogPolicy.FailFast
};

Nastavení Entra ID:

await configurationOptions.ConfigureForAzureWithTokenCredentialAsync(new DefaultAzureCredential());
var connection = await ConnectionMultiplexer.ConnectAsync(configurationOptions);

Základní operace Redis:

var database = connection.GetDatabase();
await database.StringSetAsync("key", "value");
var value = await database.StringGetAsync("key");

Životní cyklus tokenů a automatické opětovné ověřování

Rozšíření automaticky zpracovává životní cyklus tokenu OAuth2:

  1. Počáteční získávání – obdrží token před připojením.
  2. Proaktivní aktualizace – před vypršením platnosti tokenu (přibližně jedna hodina) získá na pozadí nový token.
  3. Opětovné ověření – znovu ověří připojení s novým tokenem bez vyřazení příkazů.

Kvůli pozorovatelnosti se můžete přihlásit k odběru událostí tokenu:

Event Účel
TokenRefreshed Byl získán nový token.
TokenRefreshFailed Aktualizace tokenu se nezdařila (stále používá starý token)
ConnectionReauthenticated Připojení bylo úspěšně znovu ověřeno.
ConnectionReauthenticationFailed Opětovné ověření připojení se nezdařilo.

RESP3 vs. protokol RESP2

Ukázka používá RESP3 (Protocol = RedisProtocol.Resp3), protože:

  • RESP2 vytvoří samostatná připojení pro interaktivní příkazy a pub/sub.
  • Pouze interaktivní připojení se proaktivně znovu ověří.
  • Připojení pub/sub se zavřou, když vyprší platnost jejich tokenu, což způsobuje krátké přerušení v provozu.
  • RESP3 multiplexuje vše na jednom připojení, aby se zabránilo těmto přerušením.

Požadavky Azure

  1. Vytvořte instanci Azure Managed Redis.
  2. V části Konfigurace přístupu k datům povolte ověřování pomocí Microsoft Entra ID.
  3. Přidejte svoji identitu jako uživatele Redis s příslušnými oprávněními (vlastník dat, přispěvatel dat atd.).
  4. Spusťte az login lokálně pro ověření pomocí vašeho účtu Entra ID.

Základní koncepty Redis

Koncepce Description
ConnectionMultiplexer Singletonový fond připojení bezpečný pro přístup z více vláken k Redis. Vytvořte ho jednou a znovu ho použijte po celou dobu života aplikace.
IDatabase Rozhraní pro spouštění příkazů (StringGet, StringSet, HashGetatd.)
Formát koncového bodu endpoint:10000 (TLS) pro Azure Managed Redis.

Spuštění ukázkového programu

az login
cd sample
dotnet run

Zadejte koncový bod Redis (například <your-redis-name>.<region>.redis.azure.net:10000), zvolte metodu ověřování 1 (DefaultAzureCredential) a sledujte + , jak se znaky vytisknou každých sekundu, jakmile budou příkazy úspěšné. Nechte ho běžet déle než 60 minut, abyste ověřili, že automatická aktualizace tokenu funguje.

Důležité informace o produkčním prostředí

Setting Ukázková hodnota Produkční hodnota
AbortOnConnectFail true false (zkuste to znovu při spuštění)
BacklogPolicy FailFast Default (příkazy fronty během přechodných selhání)
Životnost připojení Ukázková smyčka Singleton při použití DI (IConnectionMultiplexer)

Tato ukázka poskytuje úplnou referenční implementaci pro zabezpečené ověřování Entra ID bez hesla v libovolné aplikaci .NET, která používá Azure Managed Redis.