Rövid útmutató: Az Azure Managed Redis használata a .NET Core-ban

Ez a .NET 8 konzolalkalmazás bemutatja, hogyan csatlakozhat az Azure Managed RedishezMicrosoft Entra ID-hitelesítéssel . Az alapvető értékajánlat a jelszó nélküli hitelesítés automatikus jogkivonat-frissítéssel, amely biztonságos és modern megközelítést biztosít a Redis-kapcsolathoz.

Ugrás a GitHubon található kódra

Klónozza a Microsoft.Azure.StackExchangeRedis adattárat a GitHubon.

Előfeltételek

  • .NET 8.0 SDK.
  • Az Azure-előfizetésben kiépített Azure Managed Redis-példány .
  • Az Azure-felhasználót vagy szolgáltatás főnevet Redis-felhasználóként kell hozzáadni a gyorsítótárhoz. Az Azure Portalon lépjen az Erőforrás menü Hitelesítés elemére, válassza a Felhasználó vagy szolgáltatásnév lehetőséget, és adja hozzá az identitását.
  • Azure CLI a helyi fejlesztési hitelesítéshez.

Szükséges NuGet-csomagok

Package Cél
Microsoft.Azure.StackExchangeRedis Bővítménytár, amely hozzáadja a Microsoft Entra ID-hitelesítést a StackExchange.Redishez
Azure.Identity Biztosít DefaultAzureCredential és egyéb Azure-identitás implementációt
StackExchange.Redis A mögöttes Redis-kliens (függőségként kerül be)
Microsoft.Extensions.Logging.Console Konzolnaplózás diagnosztikai célokból

Hitelesítési módszerek

A bővítmény több identitástípust is támogat, amelyek mindegyike rendelkezik megfelelő ConfigureForAzure*() bővítménymetódussal:

  1. DefaultAzureCredential - Az ajánlott megközelítés. Több hitelesítő forrást (környezeti változókat, felügyelt identitást, Azure CLI-hitelesítést, Visual Studio-hitelesítő adatokat stb.) láncokban kezel, és az elsőt használja, amely működik. Ideális helyileg és az Azure-ban egyaránt futó kódokhoz.

  2. User-Assigned Felügyelt identitás – Az Azure által üzemeltetett alkalmazások esetében, ahol az ügyfélazonosító megadásával explicit módon megadhatja, hogy melyik felügyelt identitást használja.

  3. System-Assigned kezelt identitás – Azure által hosztolt alkalmazások esetében, amelyek az erőforráshoz automatikusan hozzárendelt identitást használják.

  4. Szolgáltatásnév (Titkos kód) – Ügyfélazonosító, bérlőazonosító és titkos kód automatizált vagy CI-forgatókönyvekhez.

  5. Szolgáltatási főszereplő (tanúsítvány) – Ügyfél-azonosító, bérlőazonosító és X.509 tanúsítvány a nagyobb biztonság érdekében.

Hogyan működik helyi DefaultAzureCredential

Helyi fejlesztés DefaultAzureCredential esetén a következő módszerekkel próbál hitelesítést végezni:

az login

Ez a módszer lehetővé teszi, hogy a Microsoft Entra ID-fiókjával jelentkezzen be az Azure CLI-be. Az SDK észleli a gyorsítótárazott hitelesítő adatokat, és tokenek beszerzésére használja őket. A Microsoft Entra ID-felhasználót Redis-felhasználóként kell konfigurálnia az Azure Managed Redis-erőforráson az Azure Portal Erőforrás menüjének hitelesítésével .

Főbb megvalósítási minták

Kapcsolatkonfiguráció:

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-azonosító beállítása:

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

Alapszintű Redis-műveletek:

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

Jogkivonat életciklusa és automatikus újrahitelesítés

A bővítmény automatikusan kezeli az OAuth2-jogkivonat életciklusát:

  1. Kezdeti beszerzés – Csatlakozás előtt megkap egy tokent.
  2. Proaktív frissítés – A jogkivonat lejárata előtt (körülbelül egy óra) új jogkivonatot kap a háttérben.
  3. Újrabejelentkezés – A parancsok elvetése nélkül újra hitelesíti a kapcsolatot az új azonosítóval.

A megfigyelhetőség érdekében feliratkozhat a token-eseményekre:

Event Cél
TokenRefreshed Új token megszerezve
TokenRefreshFailed A jogkivonat frissítése nem sikerült (a régi jogkivonat használata továbbra is fennáll)
ConnectionReauthenticated A kapcsolat ismételt hitelesítése sikeresen megtörtént
ConnectionReauthenticationFailed Kapcsolat újbóli hitelesítése meghiúsult

RESP3 és RESP2 protokoll

A példa RESP3 (Protocol = RedisProtocol.Resp3) használja, mert:

  • A RESP2 külön kapcsolatokat hoz létre az interaktív parancsokhoz és a közzététel/feliratkozás rendszerhez.
  • Csak az interaktív kapcsolat lesz proaktívan újrahitelesítve.
  • A pub/sub kapcsolatok a jogkivonat lejáratakor lezárulnak, ami rövid idejű megszakításokat okoz.
  • A RESP3 multiplexel mindent egy kapcsolaton, így elkerüli ezeket a fennakadásokat.

Azure-előfeltételek

  1. Azure Managed Redis-példány létrehozása.
  2. Engedélyezze a Microsoft Entra ID-hitelesítést az "Adatelérési konfiguráció" területen.
  3. Adja hozzá identitását Redis-felhasználóként a megfelelő engedélyekkel (adattulajdonos, adatszolgáltató stb.).
  4. Futtassa az login helyileg az Entra ID fiókjával való hitelesítéshez.

Alapszintű Redis-fogalmak

Concept Description
ConnectionMultiplexer Szingelton, szálbiztos kapcsolatkészlet Redishez. Hozza létre egyszer, és használja újra az alkalmazás élettartama alatt.
IDatabase Parancsok (StringGet, StringSet, HashGet, stb.) végrehajtásának felülete.
Végpontformátum endpoint:10000 (TLS) az Azure Managed Redishez.

A minta futtatása

az login
cd sample
dotnet run

Adja meg a Redis-végpontot (például), <your-redis-name>.<region>.redis.azure.net:10000válassza az 1 . hitelesítési módszert (DefaultAzureCredential), és figyelje meg, hogy a + karakterek másodpercenként jelennek meg a parancsok sikerességével. Futtassa több mint 60 percig az automatikus jogkivonat-frissítés működésének ellenőrzéséhez.

Gyártási megfontolások

Setting Mintaérték Gyártási érték
AbortOnConnectFail true false (újrapróbálkozás indításkor)
BacklogPolicy FailFast Default (üzenetsor-parancsok átmeneti hibák esetén)
Kapcsolat élettartama Demo ciklus Singleton keresztül DI (IConnectionMultiplexer)

Ez a minta teljes körű referencia-implementációt biztosít a biztonságos, jelszó nélküli Entra ID-hitelesítéshez az Azure Managed Redist használó .NET-alkalmazásokban.