Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tato ukázka ukazuje, jak připojit webové rozhraní API ASP.NET Core ke službě Azure Managed Redis pomocí ověřování Microsoft Entra ID s tokem DefaultAzureCredential . Aplikace se vyhne tradičnímu ověřování založenému na připojovacím řetězci ve prospěch přístupu k tokenům založenému na Microsoft Entra ID, které je v souladu s moderními osvědčenými postupy zabezpečení.
Aplikace je minimální rozhraní Web API ASP.NET Core 8.0, které:
- Vytvoří zabezpečené ověřené připojení ke službě Azure Managed Redis při spuštění.
- Zveřejňuje jednoduchý koncový bod REST, který čte a zapisuje data do mezipaměti.
- Demonstruje správnou správu životního cyklu připojení Redis pomocí injektáže závislostí.
Přeskočit na kód na GitHubu
Naklonujte úložiště Microsoft.Azure.StackExchangeRedis na GitHubu.
Požadavky
- .NET 8.0 SDK.
- Spravovaná instance Azure Redis zřízená ve vašem předplatném Azure.
- Váš uživatel nebo klient služby Azure musí být přidán jako uživatel Redis na Redis cache. V portálu Azure přejděte k položce Ověřování v nabídce Prostředky, vyberte Uživatele nebo služební principal a přidejte svou identitu.
- Azure CLI pro autentizaci při místním vývoji
Požadované balíčky NuGet
| Package | Účel |
|---|---|
Microsoft.Azure.StackExchangeRedis |
Metody rozšíření pro StackExchange.Redis, které umožňují ověřování založené na tokenech Microsoft Entra pro Azure Managed Redis |
StackExchange.Redis |
Základní klientská knihovna Redis pro .NET |
Azure.Identity |
Poskytuje DefaultAzureCredential a další typy přihlašovacích údajů pro ověřování pomocí služeb Azure. |
Swashbuckle.AspNetCore |
Podpora Swaggeru/OpenAPI pro dokumentaci a testování rozhraní API |
Nainstalujte primární balíček:
dotnet add package Microsoft.Azure.StackExchangeRedis
Tento balíček zahrnuje StackExchange.Redis a Azure.Identity jako závislosti.
Konfigurace
Aplikace čte koncový bod Redis z konfigurace. Aktualizace appsettings.Development.json:
{
"Redis": {
"Endpoint": "<your-redis-name>.<region>.redis.azure.net:10000"
}
}
Poznámka:
Azure Managed Redis ve výchozím nastavení používá port 10000 . Formát koncového bodu následuje <cache-name>.<region>.redis.azure.net:10000.
Tok ověřování
Místní vývoj
Před místním spuštěním aplikace se ověřte pomocí Azure:
az login
Automaticky DefaultAzureCredential převezme vaše přihlašovací údaje Azure CLI a použije je k získání přístupového tokenu pro prostředek Redis. Tento přístup eliminuje potřebu spravovat nebo obměňovat tajné kódy místně.
Produkční prostředí
V prostředích hostovaných v Azure, jako je App Service, Container Apps a AKS, DefaultAzureCredential se používá:
- Spravovaná identita – přiřazená systémem nebo přiřazená uživatelem
- Identita úloh – scénáře Kubernetes
- Proměnné prostředí, pro ověřování služebního principálu
Kód nemusíte měnit. Stejně DefaultAzureCredential se bez problémů přizpůsobí prostředí.
Architecture
Služba Redis (Services/Redis.cs)
Třída Redis spravuje životní cyklus připojení:
var options = new ConfigurationOptions()
{
EndPoints = { endpoint },
LoggerFactory = _loggerFactory,
};
await options.ConfigureForAzureWithTokenCredentialAsync(new DefaultAzureCredential());
_connection = await ConnectionMultiplexer.ConnectAsync(options);
Klíčové body:
-
ConfigureForAzureWithTokenCredentialAsyncje metoda rozšíření zMicrosoft.Azure.StackExchangeRediskterá nastavuje ověřování založené na tokenech. -
DefaultAzureCredentialautomaticky zpracovává získávání a aktualizaci tokenů. - Aplikace při spuštění vytvoří připojení a sdílí ho napříč požadavky.
Injekce závislostí (Program.cs)
Aplikace zaregistruje službu Redis jako singleton a inicializuje ji během spuštění:
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);
}
Kontroler rozhraní API (Controllers/SampleController.cs)
Kontroler vloží Redis službu a předvádí základní operace mezipaměti:
-
GET
/Sample: Přečte předchozí časové razítko návštěvy z mezipaměti a aktualizuje ho aktuálním časem.
Spuštění aplikace
Ujistěte se, že jste ověřeni:
az loginAktualizujte koncový bod Redis v
appsettings.Development.json.Spusťte aplikaci:
dotnet runPřejděte na
https://localhost:<port>/swagger, abyste získali přístup k uživatelskému rozhraní Swagger.
Očekávaný výstup
Při vyvolání koncového bodu GET /Sample:
První žádost:
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)
Zobrazí se protokoly konzoly:
info: Microsoft.Azure.StackExchangeRedis.Sample.AspNet.Controllers.SampleController
Handled GET request. Previous visit time: 2026-01-30T14:23:45
Klíčové podrobnosti implementace
Aktualizace tokenů:
Microsoft.Azure.StackExchangeRedisKnihovna automaticky aktualizuje tokeny před vypršením jejich platnosti, takže aktualizaci nemusíte zpracovávat ručně.Odolnost připojení:
ConnectionMultiplexerStackExchange.Redis spravuje opětovné připojení logiku samostatně.Vyčištění prostředků:
RedisSlužba provádíIDisposable, aby správně uzavřela připojení při ukončení aplikace.Integrace protokolování: Klient Redis pracuje s .
ILoggerFactoryNET pro jednotný výstup protokolování.
Řešení problémů
| Problém | Řešení |
|---|---|
No connection is available |
Ověřte formát koncového bodu a port (10000). Ujistěte se, že je instance Redis zřízená a přístupná. |
AuthenticationFailedException |
Spusťte az login pro obnovení přihlašovacích údajů. Ověřte, že je vaše identita přidána jako uživatel Redis v části Ověřování v nabídce Zdroje. |
Unauthorized |
Ujistěte se, že vaše identita Microsoft Entra ID je přidána jako uživatel Redis ve spravované instanci Azure Managed Redis. Další informace naleznete v tématu Použití Microsoft Entra ID pro ověřování mezipaměti. |