إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
يوضح هذا التطبيق لوحدة تحكم .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*() :
DefaultAzureCredential- النهج الموصى به. يربط عدة مصادر بيانات اعتماد (متغيرات البيئة، الهوية المدارة، مصادقة Azure CLI، بيانات اعتماد Visual Studio، وغيرها) ويستخدم المصدر الأول الذي يعمل. إنه مثالي للكود الذي يعمل محليا وباستخدام Azure.User-Assigned Managed Identity - للتطبيقات المستضافة Azure حيث تحدد صراحة أي هوية مدارة تستخدمها من خلال تقديم معرف العميل الخاص بها.
System-Assigned الهوية المدارة - للتطبيقات المستضافة في Azure التي تستخدم الهوية المعينة تلقائيا للمورد.
السر الرئيسي للخدمة (سري) - معرف العميل، معرف المستأجر، والسر للسيناريوهات الآلية أو CI.
موكل الخدمة (الشهادة) - معرف العميل، معرف المستأجر، وشهادة 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:
- الاستحواذ الأولي - يحصل على رمز قبل الربط.
- تحديث استباقي - قبل انتهاء صلاحية الرمز (حوالي ساعة)، يحصل على رمز جديد في الخلفية.
- إعادة المصادقة - تعيد التحقق من الاتصال بالرمز الجديد دون فقدان الأوامر.
لسهولة الملاحظة، يمكنك الاشتراك في فعاليات الرموز:
| الحدث | الغرض |
|---|---|
TokenRefreshed |
تم الحصول على رمز جديد |
TokenRefreshFailed |
فشل تحديث الرمز (لا يزال يستخدم الرمز القديم) |
ConnectionReauthenticated |
تم إعادة التحقق من الاتصال بنجاح |
ConnectionReauthenticationFailed |
فشل إعادة التوافق في الاتصال |
بروتوكول RESP3 مقابل بروتوكول RESP2
تستخدم العينة RESP3 (Protocol = RedisProtocol.Resp3) لأن:
- RESP2 ينشئ اتصالات منفصلة للأوامر التفاعلية والنشر/الترجمة.
- فقط الاتصال التفاعلي يتم إعادة التحقق بشكل استباقي.
- تغلق اتصالات النشر/الاشتراك عندما ينتهي صلاحية رمزهم، مما يسبب انقطاعات قصيرة.
- يقوم RESP3 بدمج كل شيء على اتصال واحد، مما يتجنب هذه الاضطرابات.
متطلبات Azure الأساسية
- إنشاء نسخة Azure Managed Redis.
- تفعيل مصادقة Microsoft Entra ID تحت "تكوين الوصول إلى البيانات".
- أضف هويتك كمستخدم Redis مع الأذونات المناسبة (مالك البيانات، مساهم البيانات، وهكذا).
-
اركض
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.