Aracılığıyla paylaş


Hızlı Başlangıç: .NET Core'da Azure Yönetilen Redis'i kullanma

Bu .NET 8 konsol uygulaması, Microsoft Entra ID kimlik doğrulamasını kullanarak Azure Yönetilen Redis'e nasıl bağlanacaklarını gösterir. Temel değer teklifi, otomatik belirteç yenileme ile parolasız kimlik doğrulamasıdır ve Redis bağlantısına güvenli ve modern bir yaklaşım sağlar.

GitHub'da koda atlayın

GitHub'da Microsoft.Azure.StackExchangeRedis deposunu kopyalayın.

Önkoşullar

  • .NET 8.0 SDK.
  • Azure aboneliğinizde sağlanan bir Azure Yönetilen Redis örneği.
  • Azure kullanıcınız veya hizmet sorumlunuz önbellekte Redis kullanıcısı olarak eklenmelidir. Azure portalında Kaynak menüsünde Kimlik Doğrulaması'na gidin, Kullanıcı veya hizmet sorumlusu'nı seçin ve kimliğinizi ekleyin.
  • Yerel geliştirme kimlik doğrulaması için Azure CLI.

Gerekli NuGet Paketleri

Package Amaç
Microsoft.Azure.StackExchangeRedis StackExchange.Redis'e Microsoft Entra Id kimlik doğrulaması ekleyen uzantı kitaplığı
Azure.Identity DefaultAzureCredential ve diğer Azure kimlik uygulamalarını sağlar
StackExchange.Redis Altyapı Redis istemcisi (bağımlılık olarak içe aktarılan)
Microsoft.Extensions.Logging.Console Tanılama için konsol günlüğü

Kimlik doğrulama yöntemleri

Uzantı, her biri karşılık gelen ConfigureForAzure*() bir uzantı yöntemine sahip olan birden çok kimlik türünü destekler:

  1. DefaultAzureCredential - Önerilen yaklaşım. Birden çok kimlik bilgisi kaynağını (ortam değişkenleri, yönetilen kimlik, Azure CLI kimlik doğrulaması, Visual Studio kimlik bilgileri ve daha fazlası) zincirler ve başarılı olan ilk kimlik bilgisi kaynağını kullanır. Hem yerel olarak hem de Azure'da çalışan kodlar için idealdir.

  2. User-Assigned Yönetilen Kimlik - İstemci kimliğini belirterek hangi yönetilen kimliğin kullanılacağını açıkça belirttiğiniz Azure'da barındırılan uygulamalar için.

  3. System-Assigned Yönetilen Kimlik - Kaynağa otomatik olarak atanan kimliği kullanan Azure tarafından barındırılan uygulamalar için.

  4. Hizmet Sorumlusu (Gizli) - Otomatik veya CI senaryoları için istemci kimliği, kiracı kimliği ve gizli.

  5. Hizmet Sorumlusu (Sertifika) - Daha yüksek güvenlik için İstemci Kimliği, kiracı kimliği ve X.509 sertifikası.

Yerel olarak nasıl DefaultAzureCredential çalışır?

Yerel olarak geliştirirken, DefaultAzureCredential aşağıdaki yöntemleri kullanarak kimlik doğrulaması yapmaya çalışır:

az login

Bu yöntem, Microsoft Entra ID hesabınızı kullanarak Azure CLI'da oturum açar. SDK, önbelleğe alınan kimlik bilgilerinizi algılar ve belirteçleri almak için bunları kullanır. Microsoft Entra ID kullanıcınızı Azure portalındaki Kaynak menüsündeki Kimlik Doğrulaması aracılığıyla Azure Yönetilen Redis kaynağında Redis Kullanıcısı olarak yapılandırmanız gerekir.

Anahtar uygulama desenleri

Bağlantı yapılandırması:

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 ID kurulumu:

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

Temel Redis işlemleri:

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

Belirteç yaşam döngüsü ve otomatik yeniden kimlik doğrulaması

Uzantı, OAuth2 belirteci yaşam döngüsünü otomatik olarak işler:

  1. İlk edinim - Bağlanmadan önce bir token alır.
  2. Proaktif yenileme - Belirtecin süresi dolmadan önce (yaklaşık bir saat), arka planda yeni bir belirteç alır.
  3. Yeniden kimlik doğrulaması - Komutları bırakmadan yeni belirteçle bağlantının kimliğini yeniden doğrular.

Gözlemlenebilirlik için belirteç olaylarına abone olabilirsiniz:

Event Amaç
TokenRefreshed Yeni belirteç alındı
TokenRefreshFailed Belirteç yenileme başarısız oldu (hala eski belirteci kullanıyor)
ConnectionReauthenticated Bağlantı başarıyla yeniden doğrulandı
ConnectionReauthenticationFailed Bağlantı için yeniden kimlik doğrulaması başarısız oldu

RESP3 ile RESP2 protokolü karşılaştırması

Örnek RESP3 (Protocol = RedisProtocol.Resp3) kullanır çünkü:

  • RESP2, etkileşimli komutlar ve pub/sub için ayrı bağlantılar oluşturur.
  • Yalnızca etkileşimli bağlantı proaktif olarak yeniden doğrulanır.
  • Pub/sub bağlantıları, belirteçlerinin süresi dolduğunda kapanır ve kısa süreli kesintilere neden olur.
  • RESP3, tek bir bağlantıdaki her şeyi katlar ve bu kesintileri önler.

Azure önkoşulları

  1. Azure Yönetilen Redis örneği oluştur.
  2. "Veri Erişim Yapılandırması" altında Microsoft Entra ID kimlik doğrulamasını etkinleştirin.
  3. Kimliğinizi uygun izinlere (Veri Sahibi, Veri Katkıda Bulunanı vb.) sahip bir Redis Kullanıcısı olarak ekleyin.
  4. Yerel olarak çalıştırın az login ve Entra ID hesabınızla kimlik doğrulaması yapın.

Temel Redis kavramları

Konsept Description
ConnectionMultiplexer Singleton, iş parçacığı güvenli Redis bağlantı havuzu. Bir kez oluşturun ve uygulama ömrü boyunca yeniden kullanın.
IDatabase Komutları (StringGet, StringSet, HashGetvb.) yürütmek için arabirim.
Uç nokta biçimi endpoint:10000 Azure Yönetilen Redis için (TLS).

Örneği çalıştırma

az login
cd sample
dotnet run

Redis uç noktanızı girin (örneğin), <your-redis-name>.<region>.redis.azure.net:10000kimlik doğrulama yöntemi 1'i (DefaultAzureCredential) seçin ve komutların başarılı olduğu her saniye karakterlerin + yazdırılmalarını izleyin. Otomatik belirteç yenilemenin çalıştığını doğrulamak için 60 dakikadan uzun süre çalışmasına izin verin.

Üretimle ilgili dikkat edilmesi gerekenler

Setting Örnek değer Üretim değeri
AbortOnConnectFail true false (başlangıçta yeniden deneyin)
BacklogPolicy FailFast Default (geçici hatalar sırasında kuyruk komutları)
Bağlantı ömrü Tanıtım döngüsü DI aracılığıyla singleton (IConnectionMultiplexer)

Bu örnek, Azure Yönetilen Redis kullanan herhangi bir .NET uygulamasında güvenli, parolasız Entra ID kimlik doğrulaması için eksiksiz bir başvuru uygulaması sağlar.