Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Aplikasi konsol .NET 8 ini menunjukkan cara menyambungkan ke Azure Managed Redis dengan menggunakan autentikasi ID Microsoft Entra . Proposisi nilai inti adalah autentikasi tanpa kata sandi dengan refresh token otomatis, memberikan pendekatan yang aman dan modern untuk konektivitas Redis.
Langsung ke kode pada GitHub
Klon repositori Microsoft.Azure.StackExchangeRedis di GitHub.
Prasyarat
- .NET 8.0 SDK.
- Instans Azure Managed Redis yang disediakan di langganan Azure Anda.
- Pengguna Atau perwakilan layanan Azure Anda harus ditambahkan sebagai pengguna Redis di cache. Di portal Microsoft Azure, buka Autentikasi pada menu Sumber Daya, pilih Pengguna atau perwakilan layanan, dan tambahkan identitas Anda.
- Azure CLI untuk autentikasi pengembangan lokal.
Paket NuGet yang Diperlukan
| Package | Tujuan |
|---|---|
Microsoft.Azure.StackExchangeRedis |
Pustaka ekstensi yang menambahkan autentikasi ID Microsoft Entra ke StackExchange.Redis |
Azure.Identity |
Menyediakan DefaultAzureCredential dan implementasi identitas Azure lainnya |
StackExchange.Redis |
Klien Redis yang mendasarinya (ditarik sebagai dependensi) |
Microsoft.Extensions.Logging.Console |
Pengelogan konsol untuk diagnostik |
Metode autentikasi
Ekstensi ini mendukung beberapa jenis identitas, masing-masing dengan metode ekstensi yang ConfigureForAzure*() sesuai:
DefaultAzureCredential- Pendekatan yang direkomendasikan. Ini merantai beberapa sumber kredensial (variabel lingkungan, identitas terkelola, autentikasi Azure CLI, kredensial Visual Studio, dan banyak lagi) dan menggunakan yang pertama yang berfungsi. Ini ideal untuk kode yang berjalan baik secara lokal maupun di Azure.User-Assigned Managed Identity - Untuk aplikasi yang dihosting di Azure, di mana Anda secara eksplisit menentukan identitas terkelola yang akan digunakan dengan memberikan ID kliennya.
System-Assigned Managed Identity - Untuk aplikasi yang dihosting oleh Azure yang menggunakan Managed Identity yang diberikan secara otomatis ke sumber daya.
Service Principal (Secret) - ID Klien, ID Tenant, dan rahasia untuk skenario otomatis atau CI.
Perwakilan Layanan (Sertifikat) - ID Klien, ID penyewa, dan sertifikat X.509 untuk keamanan yang lebih tinggi.
Cara DefaultAzureCredential kerjanya secara lokal
Saat Anda mengembangkan secara lokal, DefaultAzureCredential mencoba mengautentikasi dengan menggunakan metode berikut:
az login
Metode ini memasukkan Anda ke Azure CLI dengan menggunakan akun ID Microsoft Entra Anda. SDK mendeteksi kredensial cache Anda dan menggunakannya untuk mendapatkan token. Anda harus mengonfigurasi pengguna ID Microsoft Entra Anda sebagai Pengguna Redis di sumber daya Azure Managed Redis melalui Autentikasi pada menu Sumber Daya di portal Microsoft Azure.
Pola implementasi utama
Konfigurasi koneksi:
ConfigurationOptions configurationOptions = new()
{
Protocol = RedisProtocol.Resp3, // Recommended for seamless re-auth
LoggerFactory = loggerFactory,
AbortOnConnectFail = true, // Fail fast (use false in production)
BacklogPolicy = BacklogPolicy.FailFast
};
Penyiapan ID Entra:
await configurationOptions.ConfigureForAzureWithTokenCredentialAsync(new DefaultAzureCredential());
var connection = await ConnectionMultiplexer.ConnectAsync(configurationOptions);
Operasi Redis Dasar:
var database = connection.GetDatabase();
await database.StringSetAsync("key", "value");
var value = await database.StringGetAsync("key");
Siklus hidup token dan autentikasi ulang otomatis
Ekstensi secara otomatis menangani siklus hidup token OAuth2:
- Akuisisi awal - Ini mendapatkan token sebelum terhubung.
- Refresh proaktif - Sebelum token kedaluwarsa (sekitar satu jam), token tersebut mendapatkan token baru di latar belakang.
- Autentikasi ulang - Ini mengautentikasi ulang koneksi dengan token baru tanpa menghilangkan perintah.
Untuk pengamatan, Anda dapat berlangganan peristiwa token:
| Event | Tujuan |
|---|---|
TokenRefreshed |
Token baru diperoleh |
TokenRefreshFailed |
Refresh token gagal (masih menggunakan token lama) |
ConnectionReauthenticated |
Koneksi berhasil diautentikasi ulang |
ConnectionReauthenticationFailed |
Autentikasi ulang gagal untuk koneksi |
Protokol RESP3 vs. RESP2
Sampel menggunakan RESP3 (Protocol = RedisProtocol.Resp3) karena:
- RESP2 membuat koneksi terpisah untuk perintah interaktif dan pub/sub.
- Hanya koneksi interaktif yang diautentikasi ulang secara proaktif.
- Koneksi pub/sub akan terputus ketika tokennya kedaluwarsa, yang menyebabkan terjadinya gangguan singkat.
- RESP3 menggandakan semuanya pada satu koneksi, menghindari gangguan ini.
Prasyarat Azure
- Buat instans Redis yang dikelola oleh Azure.
- Aktifkan autentikasi ID Microsoft Entra di bawah "Konfigurasi Akses Data."
- Tambahkan identitas Anda sebagai Pengguna Redis dengan izin yang sesuai (Pemilik Data, Kontributor Data, dan sebagainya).
-
Menjalankan
az loginsecara lokal untuk mengautentikasi dengan akun ID Entra Anda.
Konsep Redis Dasar
| Konsep | Description |
|---|---|
ConnectionMultiplexer |
Singleton, kumpulan koneksi aman utas ke Redis. Buat sekali dan gunakan kembali untuk masa pakai aplikasi. |
IDatabase |
Antarmuka untuk menjalankan perintah (StringGet, , StringSet, HashGetdan sebagainya). |
| Format titik akhir |
endpoint:10000 (TLS) untuk Azure Managed Redis. |
Menjalankan sampel
az login
cd sample
dotnet run
Masukkan titik akhir Redis Anda (misalnya, <your-redis-name>.<region>.redis.azure.net:10000), pilih metode autentikasi 1 (DefaultAzureCredential), dan tonton + karakter yang dicetak setiap detik saat perintah berhasil. Biarkan berjalan selama lebih dari 60 menit untuk memverifikasi bahwa refresh token otomatis berfungsi.
Pertimbangan produksi
| Setting | Nilai sampel | Nilai produksi |
|---|---|---|
AbortOnConnectFail |
true |
false (coba lagi saat startup) |
BacklogPolicy |
FailFast |
Default (perintah antrean selama kegagalan sementara) |
| Masa pakai koneksi | Perulangan demo | Singleton melalui DI (IConnectionMultiplexer) |
Sampel ini menyediakan implementasi referensi lengkap untuk autentikasi ID Entra tanpa kata sandi yang aman di aplikasi .NET apa pun yang menggunakan Azure Managed Redis.