Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Esta aplicação de consola .NET 8 demonstra como se ligar ao Azure Managed Redis usando a autenticação Microsoft Entra ID . A proposta de valor central é a autenticação sem palavra-passe com atualização automática de tokens, proporcionando uma abordagem segura e moderna à conectividade Redis.
Saltar para o código no GitHub
Clone o repositório Microsoft.Azure.StackExchangeRedis no GitHub.
Pré-requisitos
- SDK do .NET 8.0.
- Uma instância Azure Managed Redis provisionada na sua subscrição Azure.
- O seu utilizador ou principal de serviço Azure deve ser adicionado como utilizador Redis na cache. No portal Azure, vá a Autenticação no menu de Recursos, selecione Utilizador ou principal de serviço e adicione a sua identidade.
- Azure CLI para autenticação para desenvolvimento local.
Pacotes NuGet Obrigatórios
| Package | Propósito |
|---|---|
Microsoft.Azure.StackExchangeRedis |
Biblioteca de extensões que adiciona autenticação Microsoft Entra ID ao StackExchange.Redis |
Azure.Identity |
Fornece DefaultAzureCredential e outras implementações de identidade do Azure |
StackExchange.Redis |
O cliente Redis subjacente (incluído como uma dependência) |
Microsoft.Extensions.Logging.Console |
Registo de consola para diagnósticos |
Métodos de autenticação
A extensão suporta múltiplos tipos de identidade, cada um com um método de extensão correspondente ConfigureForAzure*() :
DefaultAzureCredential- A abordagem recomendada. Cadeia múltiplas fontes de credenciais (variáveis de ambiente, identidade gerida, autenticação Azure CLI, credenciais Visual Studio e mais) e usa a primeira que funciona. É ideal para código que corre tanto localmente como em Azure.User-Assigned Identidade Gerida - Para aplicações alojadas no Azure onde especificas explicitamente qual a identidade gerida a usar, fornecendo o ID do cliente.
Identidade Gerida Atribuída pelo Sistema - Para aplicações alojadas no Azure que utilizam a identidade automaticamente atribuída ao recurso.
Principal de Serviço (Segredo) - ID do cliente, ID do locatário e segredo para cenários automatizados ou CI.
Principal de Serviço (Certificado) - ID do cliente, ID de inquilino e certificado X.509 para maior segurança.
Como DefaultAzureCredential funciona localmente
Quando desenvolve localmente, DefaultAzureCredential tenta autenticar utilizando os seguintes métodos:
az login
Este método faz login no Azure CLI usando a sua conta Microsoft Entra ID. O SDK deteta as suas credenciais em cache e usa-as para obter tokens. Deve configurar o seu utilizador Microsoft Entra ID como Utilizador Redis no recurso Azure Managed Redis através da Autenticação no menu de Recursos do portal Azure.
Principais padrões de implementação
Configuração da ligação:
ConfigurationOptions configurationOptions = new()
{
Protocol = RedisProtocol.Resp3, // Recommended for seamless re-auth
LoggerFactory = loggerFactory,
AbortOnConnectFail = true, // Fail fast (use false in production)
BacklogPolicy = BacklogPolicy.FailFast
};
Configuração do Entra ID:
await configurationOptions.ConfigureForAzureWithTokenCredentialAsync(new DefaultAzureCredential());
var connection = await ConnectionMultiplexer.ConnectAsync(configurationOptions);
Operações básicas do Redis:
var database = connection.GetDatabase();
await database.StringSetAsync("key", "value");
var value = await database.StringGetAsync("key");
Ciclo de vida do token e reautenticação automática
A extensão gere automaticamente o ciclo de vida do token OAuth2:
- Aquisição inicial - Recebe um token antes de se ligar.
- Atualização proativa - Antes do token expirar (cerca de uma hora), recebe um token novo em segundo plano.
- Re-autenticação - Re-autentica a ligação com o novo token sem perder comandos.
Para garantir a observabilidade, pode subscrever-se a eventos de tokens:
| Event | Propósito |
|---|---|
TokenRefreshed |
Nova ficha adquirida |
TokenRefreshFailed |
A atualização do token falhou (ainda a usar o token antigo) |
ConnectionReauthenticated |
Ligação reautenticada com sucesso |
ConnectionReauthenticationFailed |
A reautenticação falhou para a ligação |
Protocolo RESP3 vs. RESP2
O exemplo utiliza RESP3 (Protocol = RedisProtocol.Resp3) porque:
- O RESP2 cria ligações separadas para comandos interativos e pub/sub.
- Só a ligação interativa é reautenticada proativamente.
- As ligações pub/sub fecham quando o token expira, causando interrupções breves.
- O RESP3 multiplexa tudo numa só ligação, evitando estas interrupções.
Pré-requisitos do Azure
- Crie uma instância Azure Managed Redis.
- Ative a autenticação do ID Microsoft Entra em "Configuração de Acesso a Dados."
- Adicione a sua identidade como Utilizador Redis com as permissões apropriadas (Proprietário dos Dados, Contribuidor de Dados, e assim por diante).
-
Execute
az loginlocalmente para se autenticar com a sua conta Entra ID.
Conceitos básicos de Redis
| Concept | Description |
|---|---|
ConnectionMultiplexer |
Pool de conexões singleton, thread-safe para Redis. Cria-o uma vez e reutiliza-o durante a vida útil da aplicação. |
IDatabase |
Interface para execução de comandos (StringGet, StringSet, HashGet, e assim sucessivamente). |
| Formato do ponto final |
endpoint:10000 (TLS) para Azure Managed Redis. |
Executando o exemplo
az login
cd sample
dotnet run
Introduza o seu endpoint Redis (por exemplo, <your-redis-name>.<region>.redis.azure.net:10000), escolha o método de autenticação 1 (DefaultAzureCredential) e observe a impressão dos + caracteres a cada segundo, à medida que os comandos são executados com sucesso. Deixe-o funcionar por mais de 60 minutos para verificar se a atualização automática do token funciona.
Considerações sobre a produção
| Configuração | Valor da amostra | Valor de produção |
|---|---|---|
AbortOnConnectFail |
true |
false (tentativa novamente no arranque) |
BacklogPolicy |
FailFast |
Default (comandos de fila durante falhas transitórias) |
| Vida útil da ligação | Loop de demonstração | Singleton via DI (IConnectionMultiplexer) |
Este exemplo fornece uma implementação de referência completa para autenticação segura e sem palavra-passe do Entra ID em qualquer aplicação .NET que utilize Azure Managed Redis.