Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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í:
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.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.
Systémem přiřazená spravovaná identita – pro aplikace hostované v Azure, které používají identitu automaticky přiřazenou k prostředku.
Služební principál (tajemství) – ID klienta, ID tenanta a tajemství pro automatizované scénáře nebo scénáře kontinuální integrace (CI).
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:
- Počáteční získávání – obdrží token před připojením.
- Proaktivní aktualizace – před vypršením platnosti tokenu (přibližně jedna hodina) získá na pozadí nový token.
- 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
- Vytvořte instanci Azure Managed Redis.
- V části Konfigurace přístupu k datům povolte ověřování pomocí Microsoft Entra ID.
- 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.).
-
Spusťte
az loginloká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.