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.
Sampel ini menunjukkan cara menyambungkan ASP.NET Core Web API ke Azure Managed Redis dengan menggunakan autentikasi ID Microsoft Entra dengan DefaultAzureCredential alur. Aplikasi ini menghindari autentikasi berbasis string koneksi tradisional demi akses ID Microsoft Entra berbasis token, yang selaras dengan praktik terbaik keamanan modern.
Aplikasi ini adalah API Web core 8.0 ASP.NET minimal yang:
- Membuat koneksi yang aman dan diautentikasi ke Azure Managed Redis saat startup.
- Mengekspos titik akhir REST sederhana yang membaca dan menulis data ke cache.
- Menunjukkan manajemen siklus hidup koneksi Redis yang tepat dengan menggunakan injeksi dependensi.
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 |
Metode ekstensi untuk StackExchange.Redis yang mengaktifkan autentikasi berbasis token ID Microsoft Entra ke Azure Managed Redis |
StackExchange.Redis |
Pustaka klien Redis yang mendasar untuk .NET |
Azure.Identity |
Menyediakan DefaultAzureCredential dan jenis kredensial lainnya untuk mengautentikasi dengan layanan Azure |
Swashbuckle.AspNetCore |
Dukungan Swagger/OpenAPI untuk dokumentasi dan pengujian API |
Instal paket utama:
dotnet add package Microsoft.Azure.StackExchangeRedis
Paket ini membawa masuk StackExchange.Redis dan Azure.Identity sebagai dependensi.
Konfigurasi
Aplikasi membaca titik akhir Redis dari konfigurasi. Perbarui appsettings.Development.json:
{
"Redis": {
"Endpoint": "<your-redis-name>.<region>.redis.azure.net:10000"
}
}
Nota
Azure Managed Redis menggunakan port 10000 secara default. Format titik akhir mengikuti <cache-name>.<region>.redis.azure.net:10000.
Alur Autentikasi
Pembangunan Lokal
Sebelum menjalankan aplikasi secara lokal, autentikasi dengan Azure:
az login
DefaultAzureCredential secara otomatis mengambil kredensial Azure CLI Anda dan menggunakannya untuk mendapatkan token akses ke sumber daya Redis. Pendekatan ini menghilangkan kebutuhan untuk mengelola atau memutar rahasia secara lokal.
Lingkungan produksi
Di lingkungan yang dihosting Azure seperti App Service, Container Apps, dan AKS, DefaultAzureCredential menggunakan:
- Identitas Terkelola - ditetapkan sistem atau ditetapkan pengguna
- Identitas Beban Kerja - untuk skenario Kubernetes
- Variabel lingkungan - untuk autentikasi prinsipal layanan
Anda tidak perlu mengubah kode Anda. Sistem yang sama DefaultAzureCredential beradaptasi dengan mulus dengan lingkungan.
Architecture
Layanan Redis (Services/Redis.cs)
Kelas Redis mengelola siklus hidup koneksi:
var options = new ConfigurationOptions()
{
EndPoints = { endpoint },
LoggerFactory = _loggerFactory,
};
await options.ConfigureForAzureWithTokenCredentialAsync(new DefaultAzureCredential());
_connection = await ConnectionMultiplexer.ConnectAsync(options);
Poin utama:
-
ConfigureForAzureWithTokenCredentialAsyncadalah metode ekstensi dariMicrosoft.Azure.StackExchangeRedisyang menyiapkan autentikasi berbasis token -
DefaultAzureCredentialsecara otomatis menangani akuisisi dan refresh token - Aplikasi ini membuat koneksi saat startup sekali dan membagikannya pada setiap permintaan
Injeksi dependensi (Program.cs)
Aplikasi ini mendaftarkan layanan Redis sebagai singleton dan menginisialisasinya selama startup:
builder.Services.AddSingleton<Redis>();
// Initialize Redis connection
using (var scope = app.Services.CreateScope())
{
var redis = scope.ServiceProvider.GetRequiredService<Redis>();
var endpoint = app.Configuration.GetValue<string>("Redis:Endpoint");
await redis.ConnectAsync(endpoint);
}
Pengontrol API (Controllers/SampleController.cs)
Pengontrol menyuntikkan Redis layanan dan menunjukkan operasi cache dasar:
-
GET
/Sample: Membaca tanda waktu kunjungan sebelumnya dari cache dan memperbaruinya dengan waktu saat ini
Menjalankan aplikasi
Pastikan Anda diautentikasi:
az loginPerbarui endpoint Redis di
appsettings.Development.json.Jalankan aplikasi:
dotnet runNavigasi ke
https://localhost:<port>/swaggeruntuk mengakses UI Swagger.
Output yang diharapkan
Saat memanggil endpoint GET /Sample:
Permintaan pertama:
Previous visit was at:
(Empty value since no previous visit exists)
**Subsequent requests:**
Previous visit was at: 2026-01-30T14:23:45
(Returns the ISO 8601 formatted timestamp of the previous request)
Tampilan log konsol:
info: Microsoft.Azure.StackExchangeRedis.Sample.AspNet.Controllers.SampleController
Handled GET request. Previous visit time: 2026-01-30T14:23:45
Detail implementasi utama
Refresh token:
Microsoft.Azure.StackExchangeRedisPustaka secara otomatis menyegarkan token sebelum kedaluwarsa, sehingga Anda tidak perlu menangani refresh secara manual.Ketahanan koneksi:
ConnectionMultiplexerdari StackExchange.Redis mengelola logika sambungan ulangnya sendiri.Pembersihan sumber daya: Layanan
RedismenerapkanIDisposableuntuk menutup koneksi dengan benar saat aplikasi dimatikan.Integrasi pengelogan: Klien Redis bekerja dengan .
ILoggerFactoryNET untuk output pengelogan terpadu.
Troubleshooting
| Masalah | Resolusi |
|---|---|
No connection is available |
Verifikasi format dan port titik akhir (10000). Pastikan instans Redis disediakan dan dapat diakses. |
AuthenticationFailedException |
Jalankan az login untuk me-refresh kredensial. Verifikasi identitas Anda ditambahkan sebagai pengguna Redis di bawah Autentikasi pada menu Sumber Daya. |
Unauthorized |
Pastikan identitas ID Microsoft Entra Anda ditambahkan sebagai pengguna Redis pada instans Azure Managed Redis. Untuk informasi selengkapnya, lihat Menggunakan ID Microsoft Entra untuk autentikasi cache. |