Udostępnij przez


Szybki start: korzystanie z usługi Azure Managed Redis na platformie .NET Core

Ta aplikacja konsolowa platformy .NET 8 pokazuje, jak nawiązać połączenie z usługą Azure Managed Redis przy użyciu uwierzytelniania identyfikatora Entra firmy Microsoft . Podstawową wartością jest uwierzytelnianie bez hasła z automatycznym odświeżaniem tokenu, zapewniając bezpieczne i nowoczesne podejście do łączności z usługą Redis.

Przejdź do kodu w usłudze GitHub

Sklonuj repozytorium Microsoft.Azure.StackExchangeRedis w witrynie GitHub.

Wymagania wstępne

  • Zestaw .NET 8.0 SDK.
  • Wystąpienie usługi Azure Managed Redis utworzone w subskrypcji Azure.
  • Twój użytkownik platformy Azure lub zasadniczy użytkownik usługi musi zostać dodany jako użytkownik Redis w pamięci podręcznej. W witrynie Azure Portal przejdź do pozycji Uwierzytelnianie w menu Zasób, wybierz pozycję Użytkownik lub jednostka usługi i dodaj swoją tożsamość.
  • Interfejs wiersza polecenia platformy Azure na potrzeby lokalnego uwierzytelniania programistycznego. "Azure CLI"

Wymagane pakiety NuGet

Package Przeznaczenie
Microsoft.Azure.StackExchangeRedis Biblioteka rozszerzeń, która dodaje uwierzytelnianie Microsoft Entra ID do StackExchange.Redis
Azure.Identity Udostępnia DefaultAzureCredential i inne implementacje tożsamości platformy Azure
StackExchange.Redis Podstawowy klient Redis (pobrany jako zależność)
Microsoft.Extensions.Logging.Console Logowanie konsoli na potrzeby diagnostyki

Metody uwierzytelniania

Rozszerzenie obsługuje wiele typów tożsamości, z których każda ma odpowiednią ConfigureForAzure*() metodę rozszerzenia:

  1. DefaultAzureCredential - Zalecane podejście. Łączy wiele źródeł poświadczeń (zmienne środowiskowe, tożsamość zarządzaną, uwierzytelnianie za pomocą Azure CLI, poświadczenia Visual Studio i inne) i używa pierwszego, które działa. Jest to idealne rozwiązanie w przypadku kodu, który działa lokalnie i na platformie Azure.

  2. Nadawana przez użytkownika tożsamość zarządzana — dla aplikacji hostowanych na platformie Azure, w której jawnie wybierasz używaną tożsamość zarządzaną poprzez podanie jej identyfikatora klienta.

  3. Tożsamość zarządzana przypisana przez system — dla aplikacji hostowanych na platformie Azure, które używają tożsamości przypisanej automatycznie do zasobu.

  4. Główna usługa (tajny) — identyfikator klienta, identyfikator dzierżawy i klucz tajny dla scenariuszy zautomatyzowanych lub CI.

  5. Service Principal (certyfikat) — identyfikator klienta, identyfikator dzierżawy i certyfikat X.509 w celu zwiększenia bezpieczeństwa.

Jak DefaultAzureCredential działa lokalnie

Podczas lokalnego programowania DefaultAzureCredential podejmuje próbę uwierzytelnienia, korzystając z następujących metod:

az login

Ta metoda umożliwia zalogowanie się do interfejsu wiersza polecenia platformy Azure przy użyciu konta Microsoft Entra ID. Zestaw SDK wykrywa buforowane poświadczenia i używa ich do uzyskiwania tokenów. Musisz skonfigurować użytkownika Microsoft Entra ID jako użytkownika usługi Redis w zasobie Azure Managed Redis za pomocą uwierzytelniania w menu Zasób w portalu Azure.

Kluczowe wzorce implementacji

Konfiguracja połączenia:

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

Konfiguracja Entra ID:

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

Podstawowe operacje usługi Redis:

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

Cykl życia tokenu i automatyczne ponowne uwierzytelnianie

Rozszerzenie automatycznie obsługuje cykl życia tokenu OAuth2:

  1. Początkowe pozyskiwanie — pobiera token przed nawiązaniem połączenia.
  2. Proaktywne odświeżanie — przed wygaśnięciem tokenu (około godziny) pobiera nowy token w tle.
  3. Ponowne uwierzytelnianie — ponownie uwierzytelnia połączenie przy użyciu nowego tokenu bez porzucania poleceń.

Aby uzyskać wgląd, możesz subskrybować zdarzenia tokenu:

Event Przeznaczenie
TokenRefreshed Pozyskany nowy token
TokenRefreshFailed Odświeżanie tokenu nie powiodło się (nadal przy użyciu starego tokenu)
ConnectionReauthenticated Pomyślnie ponownie uwierzytelniono połączenie
ConnectionReauthenticationFailed Ponowne uwierzytelnianie nie powiodło się dla połączenia

PROTOKÓŁ RESP3 a RESP2

W przykładzie użyto programu RESP3 (Protocol = RedisProtocol.Resp3), ponieważ:

  • Program RESP2 tworzy oddzielne połączenia dla poleceń interaktywnych i pub/sub.
  • Tylko połączenie interakcyjne jest aktywnie ponownie uwierzytelniane.
  • Połączenia pub/sub zamykają się po wygaśnięciu tokenu, co powoduje krótkie przerwy.
  • ReSP3 multipleksuje wszystko na jednym połączeniu, unikając tych zakłóceń.

Wymagania wstępne platformy Azure

  1. Utwórz wystąpienie usługi Redis zarządzanej platformy Azure.
  2. Włącz uwierzytelnianie identyfikatora Entra firmy Microsoft w obszarze "Konfiguracja dostępu do danych".
  3. Dodaj swoją tożsamość jako użytkownik usługi Redis z odpowiednimi uprawnieniami (właściciel danych, współautor danych itd.).
  4. Uruchom az login lokalnie, aby uwierzytelnić się za pomocą konta Entra ID.

Podstawowe pojęcia dotyczące usługi Redis

Concept Description
ConnectionMultiplexer Pojedyncza, bezpieczna wątkowo pula połączeń z usługą Redis. Utwórz go raz i użyj go ponownie w okresie istnienia aplikacji.
IDatabase Interfejs do wykonywania poleceń (StringGet, StringSet, HashGeti tak dalej).
Format punktu końcowego endpoint:10000 (TLS) dla usługi Azure Managed Redis.

Uruchamianie przykładu

az login
cd sample
dotnet run

Wprowadź punkt końcowy usługi Redis (na przykład <your-redis-name>.<region>.redis.azure.net:10000), wybierz metodę uwierzytelniania 1 (DefaultAzureCredential) i obserwuj + , jak znaki są drukowane co sekundę, gdy polecenia kończą się powodzeniem. Poczekaj ponad 60 minut, aby sprawdzić, czy automatyczne odświeżanie tokenu działa.

Zagadnienia dotyczące środowiska produkcyjnego

Setting Przykładowa wartość Wartość produkcyjna
AbortOnConnectFail true false (Ponów próbę przy uruchamianiu)
BacklogPolicy FailFast Default (polecenia kolejki podczas tymczasowych błędów)
Okres istnienia połączenia Pętla demonstracyjna Singleton przez DI (IConnectionMultiplexer)

Ten przykład zawiera pełną implementację referencyjną do bezpiecznego, bez hasła uwierzytelniania entra ID w dowolnej aplikacji .NET korzystającej z usługi Azure Managed Redis.