Sdílet prostřednictvím


Ukázka Azure Managed Redis – webové rozhraní API ASP.NET Core

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é:

  1. Vytvoří zabezpečené ověřené připojení ke službě Azure Managed Redis při spuštění.
  2. Zveřejňuje jednoduchý koncový bod REST, který čte a zapisuje data do mezipaměti.
  3. 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:

  • ConfigureForAzureWithTokenCredentialAsync je metoda rozšíření z Microsoft.Azure.StackExchangeRedis která nastavuje ověřování založené na tokenech.
  • DefaultAzureCredential automaticky 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

  1. Ujistěte se, že jste ověřeni:

    az login
    
  2. Aktualizujte koncový bod Redis v appsettings.Development.json.

  3. Spusťte aplikaci:

    dotnet run
    
  4. Př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.StackExchangeRedis Knihovna automaticky aktualizuje tokeny před vypršením jejich platnosti, takže aktualizaci nemusíte zpracovávat ručně.

  • Odolnost připojení: ConnectionMultiplexer StackExchange.Redis spravuje opětovné připojení logiku samostatně.

  • Vyčištění prostředků: Redis Služba provádí IDisposable, aby správně uzavřela připojení při ukončení aplikace.

  • Integrace protokolování: Klient Redis pracuje s . ILoggerFactory NET 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.