مشاركة عبر


Quickstart: استخدم Azure Managed Redis في .NET Core

يوضح هذا التطبيق لوحدة تحكم .NET 8 كيفية الاتصال ب Azure Managed Redis باستخدام مصادقة Microsoft Entra ID . القيمة الأساسية هي المصادقة بدون كلمة مرور مع تحديث تلقائي للرمز، مما يوفر نهجا آمنا وحديثا لاتصال Redis.

انتقل إلى الكود على GitHub

قم باستنساخ مخزن Microsoft.Azure.StackExchangeRedis على GitHub.

المتطلبات الأساسية

  • حزمة تطوير .NET 8.0.
  • مثيل Azure Managed Redis تم توفيره في اشتراكك في Azure.
  • يجب إضافة مستخدم Azure أو مبدأ الخدمة كمستخدم Redis في ذاكرة التخزين المؤقت. في بوابة Azure، اذهب إلى المصادقة في قائمة الموارد، اختر المستخدم أو الخدمة، وأضف هويتك.
  • Azure CLI for Local Development Authentication.

حزم NuGet المطلوبة

الحزمة الغرض
Microsoft.Azure.StackExchangeRedis مكتبة امتدادات تضيف مصادقة Microsoft Entra ID إلى StackExchange.Redis
Azure.Identity يوفر DefaultAzureCredential تطبيقات هوية Azure وغيرها
StackExchange.Redis العميل الأساسي ل Redis (تم سحبه كتبعية)
Microsoft.Extensions.Logging.Console تسجيل الكونسول لأغراض التشخيص

طرق المصادقة

يدعم الامتداد عدة أنواع من الهويات، كل منها له طريقة امتداد مقابلة ConfigureForAzure*() :

  1. DefaultAzureCredential - النهج الموصى به. يربط عدة مصادر بيانات اعتماد (متغيرات البيئة، الهوية المدارة، مصادقة Azure CLI، بيانات اعتماد Visual Studio، وغيرها) ويستخدم المصدر الأول الذي يعمل. إنه مثالي للكود الذي يعمل محليا وباستخدام Azure.

  2. User-Assigned Managed Identity - للتطبيقات المستضافة Azure حيث تحدد صراحة أي هوية مدارة تستخدمها من خلال تقديم معرف العميل الخاص بها.

  3. System-Assigned الهوية المدارة - للتطبيقات المستضافة في Azure التي تستخدم الهوية المعينة تلقائيا للمورد.

  4. السر الرئيسي للخدمة (سري) - معرف العميل، معرف المستأجر، والسر للسيناريوهات الآلية أو CI.

  5. موكل الخدمة (الشهادة) - معرف العميل، معرف المستأجر، وشهادة X.509 للأمان الأعلى.

كيف DefaultAzureCredential يعمل محليا

عند التطوير محليا، DefaultAzureCredential تحاول المصادقة باستخدام الطرق التالية:

az login

هذه الطريقة تقوم بتسجيل الدخول إلى واجهة زر زر Azure باستخدام حساب Microsoft Entra ID الخاص بك. تكتشف SDK بيانات الاعتماد المخزنة وتستخدمها للحصول على الرموز. يجب عليك تكوين مستخدم Microsoft Entra ID الخاص بك كمستخدم Redis على مورد Azure Managed Redis من خلال قائمة المصادقة في قائمة الموارد في بوابة Azure.

أنماط التنفيذ الرئيسية

تكوين الاتصال:

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:

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

عمليات Redis الأساسية:

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

دورة حياة الرمز وإعادة المصادقة التلقائية

تتعامل الإضافة تلقائيا مع دورة حياة رموز OAuth2:

  1. الاستحواذ الأولي - يحصل على رمز قبل الربط.
  2. تحديث استباقي - قبل انتهاء صلاحية الرمز (حوالي ساعة)، يحصل على رمز جديد في الخلفية.
  3. إعادة المصادقة - تعيد التحقق من الاتصال بالرمز الجديد دون فقدان الأوامر.

لسهولة الملاحظة، يمكنك الاشتراك في فعاليات الرموز:

الحدث الغرض
TokenRefreshed تم الحصول على رمز جديد
TokenRefreshFailed فشل تحديث الرمز (لا يزال يستخدم الرمز القديم)
ConnectionReauthenticated تم إعادة التحقق من الاتصال بنجاح
ConnectionReauthenticationFailed فشل إعادة التوافق في الاتصال

بروتوكول RESP3 مقابل بروتوكول RESP2

تستخدم العينة RESP3 (Protocol = RedisProtocol.Resp3) لأن:

  • RESP2 ينشئ اتصالات منفصلة للأوامر التفاعلية والنشر/الترجمة.
  • فقط الاتصال التفاعلي يتم إعادة التحقق بشكل استباقي.
  • تغلق اتصالات النشر/الاشتراك عندما ينتهي صلاحية رمزهم، مما يسبب انقطاعات قصيرة.
  • يقوم RESP3 بدمج كل شيء على اتصال واحد، مما يتجنب هذه الاضطرابات.

متطلبات Azure الأساسية

  1. إنشاء نسخة Azure Managed Redis.
  2. تفعيل مصادقة Microsoft Entra ID تحت "تكوين الوصول إلى البيانات".
  3. أضف هويتك كمستخدم Redis مع الأذونات المناسبة (مالك البيانات، مساهم البيانات، وهكذا).
  4. اركض az login محليا للمصادقة باستخدام حساب Entra ID الخاص بك.

مفاهيم ريديس الأساسية

المفهوم الوصف
ConnectionMultiplexer تجمع اتصال واحد آمن بالخيوط إلى Redis. أنشئها مرة واحدة وأعدت استخدامها طوال عمر التطبيق.
IDatabase واجهة لتنفيذ الأوامر (StringGet، StringSet، HashGet، وهكذا).
تنسيق نقطة النهاية endpoint:10000 (TLS) لإعادة بيانات Azure Manage.

تشغيل العينة

az login
cd sample
dotnet run

أدخل نقطة نهاية Redis الخاصة بك (على سبيل المثال)، <your-redis-name>.<region>.redis.azure.net:10000واختر طريقة المصادقة 1 (DefaultAzureCredential)، وشاهد + الأحرف تطبع كل ثانية مع نجاح الأوامر. دعها تعمل لأكثر من 60 دقيقة للتحقق من أن تحديث الرموز التلقائي يعمل.

اعتبارات الإنتاج

الإعداد عينة القيمة قيمة الإنتاج
AbortOnConnectFail true false (إعادة المحاولة عند بدء التشغيل)
BacklogPolicy FailFast Default (أوامر الطابور أثناء الأعطال المؤقتة)
عمر الاتصال حلقة العرض سينجلتون عبر DI (IConnectionMultiplexer)

يوفر هذا العينة تنفيذا مرجعيا كاملا للمصادقة الآمنة وبدون كلمة مرور على معرف إنترا في أي تطبيق .NET يستخدم Azure Managed Redis.