Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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:
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.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.
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.
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.
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:
- Kezdeti beszerzés – Csatlakozás előtt megkap egy tokent.
- Proaktív frissítés – A jogkivonat lejárata előtt (körülbelül egy óra) új jogkivonatot kap a háttérben.
- Ú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
- Azure Managed Redis-példány létrehozása.
- Engedélyezze a Microsoft Entra ID-hitelesítést az "Adatelérési konfiguráció" területen.
- Adja hozzá identitását Redis-felhasználóként a megfelelő engedélyekkel (adattulajdonos, adatszolgáltató stb.).
-
Futtassa
az loginhelyileg 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.