Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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:
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.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.
System-Assigned Yönetilen Kimlik - Kaynağa otomatik olarak atanan kimliği kullanan Azure tarafından barındırılan uygulamalar için.
Hizmet Sorumlusu (Gizli) - Otomatik veya CI senaryoları için istemci kimliği, kiracı kimliği ve gizli.
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:
- İlk edinim - Bağlanmadan önce bir token alır.
- Proaktif yenileme - Belirtecin süresi dolmadan önce (yaklaşık bir saat), arka planda yeni bir belirteç alır.
- 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ı
- Azure Yönetilen Redis örneği oluştur.
- "Veri Erişim Yapılandırması" altında Microsoft Entra ID kimlik doğrulamasını etkinleştirin.
- Kimliğinizi uygun izinlere (Veri Sahibi, Veri Katkıda Bulunanı vb.) sahip bir Redis Kullanıcısı olarak ekleyin.
-
Yerel olarak çalıştırın
az loginve 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.