Compartir a través de


Inicio rápido: Uso de Azure Managed Redis en .NET Core

Esta aplicación de consola de .NET 8 muestra cómo conectarse a Azure Managed Redis mediante la autenticación de Id. de Microsoft Entra . La propuesta de valor principal es la autenticación sin contraseña con actualización automática de tokens, lo que proporciona un enfoque seguro y moderno para la conectividad de Redis.

Ir al código en GitHub

Clone el repositorio Microsoft.Azure.StackExchangeRedis en GitHub.

Prerrequisitos

  • SDK DE .NET 8.0.
  • Una instancia de Azure Managed Redis aprovisionada en la suscripción de Azure.
  • El usuario o la entidad de servicio de Azure deben agregarse como usuario de Redis en la caché. En Azure Portal, vaya a Autenticación en el menú Recurso, seleccione Usuario o entidad de servicio y agregue su identidad.
  • CLI de Azure para la autenticación de desarrollo local.

Paquetes NuGet necesarios

Package Propósito
Microsoft.Azure.StackExchangeRedis Biblioteca de extensiones que agrega autenticación de Microsoft Entra ID a StackExchange.Redis
Azure.Identity Proporciona DefaultAzureCredential y otras implementaciones de identidad de Azure
StackExchange.Redis El cliente de Redis subyacente (incluido como una dependencia)
Microsoft.Extensions.Logging.Console Registro de eventos en consola para fines de diagnóstico

Métodos de autenticación

La extensión admite varios tipos de identidad, cada uno con un método de extensión correspondiente ConfigureForAzure*() :

  1. DefaultAzureCredential - El enfoque recomendado. Encadena varios orígenes de credenciales (variables de entorno, identidad administrada, autenticación de la CLI de Azure, credenciales de Visual Studio, etc.) y usa la primera que funciona. Es ideal para el código que se ejecuta tanto localmente como en Azure.

  2. Identidad Administrada Asignada por el Usuario - en el caso de las aplicaciones hospedadas en Azure, donde usted especifica explícitamente qué identidad administrada usar al proporcionar su identificador de cliente.

  3. Identidad Gestionada Asignada por el Sistema - para las aplicaciones hospedadas en Azure que usan la identidad asignada automáticamente al recurso.

  4. Principal de servicio (secreto): ID de cliente, ID de tenant y secreto para escenarios automatizados o de integración continua (CI).

  5. Servicio Principal (certificado): ID de cliente, ID de inquilino y certificado X.509 para mayor seguridad.

Cómo funciona DefaultAzureCredential localmente

Al desarrollar localmente, DefaultAzureCredential intenta autenticarse mediante los métodos siguientes:

az login

Este método inicia sesión en la CLI de Azure mediante su cuenta de ID de Microsoft Entra. El SDK detecta las credenciales almacenadas en caché y las usa para obtener tokens. Debe configurar su usuario de Microsoft Entra ID como un usuario de Redis en el recurso de Azure Managed Redis a través de la Autenticación en el menú Recurso dentro del portal de Azure.

Patrones de implementación clave

Configuración de conexión:

ConfigurationOptions configurationOptions = new()
{
    Protocol = RedisProtocol.Resp3,  // Recommended for seamless re-auth
    LoggerFactory = loggerFactory,
    AbortOnConnectFail = true,       // Fail fast (use false in production)
    BacklogPolicy = BacklogPolicy.FailFast
};

Configuración de Entra ID:

await configurationOptions.ConfigureForAzureWithTokenCredentialAsync(new DefaultAzureCredential());
var connection = await ConnectionMultiplexer.ConnectAsync(configurationOptions);

Operaciones básicas de Redis:

var database = connection.GetDatabase();
await database.StringSetAsync("key", "value");
var value = await database.StringGetAsync("key");

Ciclo de vida del token y autenticación automática

La extensión controla automáticamente el ciclo de vida del token de OAuth2:

  1. Adquisición inicial : obtiene un token antes de conectarse.
  2. Actualización proactiva : antes de que expire el token (aproximadamente una hora), obtiene un token nuevo en segundo plano.
  3. Volver a autenticar : vuelve a autenticar la conexión con el nuevo token sin quitar comandos.

Para la observabilidad, puede suscribirse a eventos de token:

Event Propósito
TokenRefreshed Nuevo token adquirido
TokenRefreshFailed Error de actualización del token (todavía con el token antiguo)
ConnectionReauthenticated Conexión re-autenticada correctamente
ConnectionReauthenticationFailed Error de reautenticación para una conexión

Resp3 frente al protocolo RESP2

En el ejemplo se usa RESP3 (Protocol = RedisProtocol.Resp3) porque:

  • RESP2 crea conexiones independientes para comandos interactivos y pub/sub.
  • Solo la conexión interactiva se vuelve a autenticar de forma proactiva.
  • Las conexiones pub/sub se cierran cuando expira su token, lo que provoca interrupciones breves.
  • Resp3 multiplexa todo en una conexión, evitando estas interrupciones.

Requisitos previos de Azure

  1. Cree una instancia de Azure Managed Redis.
  2. Habilite la autenticación de Microsoft Entra ID en "Configuración de acceso a datos".
  3. Agregue su identidad como usuario de Redis con los permisos adecuados (Propietario de datos, Colaborador de datos, etc.).
  4. Ejecute localmente az login para autenticarse con su cuenta de Entra ID.

Conceptos básicos de Redis

Concepto Description
ConnectionMultiplexer Grupo de conexiones singleton seguras para subprocesos en Redis. Créala una vez y reutilízala durante toda la vida útil de la aplicación.
IDatabase Interfaz para ejecutar comandos (StringGet, StringSet, HashGet, etc.).
Formato de puntos de conexión endpoint:10000 (TLS) para Azure Managed Redis.

Ejecución del ejemplo

az login
cd sample
dotnet run

Escriba el punto de conexión de Redis (por ejemplo, <your-redis-name>.<region>.redis.azure.net:10000), elija el método de autenticación 1 (DefaultAzureCredential) y observe que los + caracteres se imprimen cada segundo a medida que los comandos se realizan correctamente. Deje que se ejecute durante más de 60 minutos para comprobar que funciona la actualización automática de tokens.

Consideraciones de producción

Configuración Valor de ejemplo Valor de producción
AbortOnConnectFail true false (reintentar en el inicio)
BacklogPolicy FailFast Default (comandos de cola durante errores transitorios)
Duración de la conexión Bucle de demostración Singleton a través de DI (IConnectionMultiplexer)

En este ejemplo se proporciona una implementación de referencia completa para la autenticación segura de Entra ID sin contraseña en cualquier aplicación .NET que use Azure Managed Redis.