Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом примере показано, как подключить веб-API ASP.NET Core к Управляемому Redis в Azure с помощью проверки подлинности идентификатора Microsoft Entra с потоком DefaultAzureCredential . Приложение избегает традиционной аутентификации на основе строк подключения в пользу аутентификации на основе токенов и с использованием идентификатора Microsoft Entra, что соответствует современным рекомендациям по безопасности.
Приложение является минимальным Web API на платформе ASP.NET Core 8.0, которое:
- Устанавливает безопасное, прошедшее проверку подлинности подключение к Управляемому Redis в Azure при запуске.
- Предоставляет простую конечную точку REST, которая считывает и записывает данные в кэш.
- Демонстрирует правильное управление жизненным циклом подключения Redis с помощью внедрения зависимостей.
Переход к коду на GitHub
Клонируйте репозиторий Microsoft.Azure.StackExchangeRedis на GitHub.
Предпосылки
- Пакет SDK для .NET 8.0.
- Экземпляр Azure Managed Redis, развернутый в подписке Azure.
- Пользователь или учётная запись службы Azure должны быть добавлены в кэш в качестве пользователя Redis. На портале Azure в меню "Ресурс" перейдите в раздел "Проверка подлинности, выберите "Пользователь" или "Служебный принципал" и затем добавьте своё удостоверение.
- Azure CLI для локальной проверки подлинности разработки.
Обязательные пакеты NuGet
| Package | Цель |
|---|---|
Microsoft.Azure.StackExchangeRedis |
Методы расширения для StackExchange.Redis, которые обеспечивают аутентификацию на основе токенов идентификаторов Microsoft Entra для Управляемого Redis в Azure. |
StackExchange.Redis |
Базовая клиентская библиотека Redis для .NET |
Azure.Identity |
Предоставляет DefaultAzureCredential и другие типы учетных данных для проверки подлинности с помощью служб Azure |
Swashbuckle.AspNetCore |
Поддержка Swagger/OpenAPI для документации и тестирования API |
Установите основной пакет:
dotnet add package Microsoft.Azure.StackExchangeRedis
Этот пакет добавляет StackExchange.Redis и Azure.Identity в качестве зависимостей.
Конфигурация
Приложение считывает конечную точку Redis из конфигурации. Обновление appsettings.Development.json:
{
"Redis": {
"Endpoint": "<your-redis-name>.<region>.redis.azure.net:10000"
}
}
Замечание
Управляемый Redis Azure использует порт 10000 по умолчанию. Формат конечной точки: <cache-name>.<region>.redis.azure.net:10000.
Поток проверки подлинности
Локальная разработка
Перед локальной запуском приложения выполните проверку подлинности с помощью Azure:
az login
Эта DefaultAzureCredential автоматически получает учетные данные Azure CLI и использует их для получения токена доступа для ресурса Redis. Такой подход устраняет необходимость локального управления секретами или смены секретов.
Рабочие среды
В средах, размещенных в Azure, таких как служба приложений, приложения контейнеров и AKS, DefaultAzureCredential используется:
- Управляемое удостоверение — назначаемое системой или назначаемое пользователем
- Workload Identity — для сценариев Kubernetes
- Переменные среды — для проверки подлинности учетной записи службы
Вам не нужно изменять код. То же DefaultAzureCredential бесшовно адаптируется к среде.
Architecture
Служба Redis (Services/Redis.cs)
Класс Redis управляет жизненным циклом подключения:
var options = new ConfigurationOptions()
{
EndPoints = { endpoint },
LoggerFactory = _loggerFactory,
};
await options.ConfigureForAzureWithTokenCredentialAsync(new DefaultAzureCredential());
_connection = await ConnectionMultiplexer.ConnectAsync(options);
Основные моменты:
-
ConfigureForAzureWithTokenCredentialAsync— это метод расширения изMicrosoft.Azure.StackExchangeRedis, который настраивает аутентификацию на основе токенов. -
DefaultAzureCredentialавтоматически обрабатывает получение и обновление токенов - Приложение устанавливает подключение сразу при запуске и использует его для всех запросов.
Внедрение зависимостей (Program.cs)
Приложение регистрирует службу Redis как синглтон и инициализирует ее во время запуска.
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);
}
Контроллер API (Controllers/SampleController.cs)
Контроллер внедряет Redis службу и демонстрирует основные операции кэша:
-
GET
/Sample: считывает метку времени посещения из кэша и обновляет ее с текущим временем.
Запуск приложения
Убедитесь, что вы прошли проверку подлинности:
az loginОбновите конечную точку Redis в
appsettings.Development.json.Запустите приложение:
dotnet runПерейдите к
https://localhost:<port>/swagger, чтобы получить доступ к пользовательскому интерфейсу Swagger.
Ожидаемые выходные данные
При вызове конечной GET /Sample точки:
Первый запрос:
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)
Отображаются журналы консоли:
info: Microsoft.Azure.StackExchangeRedis.Sample.AspNet.Controllers.SampleController
Handled GET request. Previous visit time: 2026-01-30T14:23:45
Основные детали реализации
Обновление маркера. Библиотека
Microsoft.Azure.StackExchangeRedisавтоматически обновляет маркеры до истечения срока их действия, поэтому вам не нужно обрабатывать обновление вручную.Устойчивость подключений: StackExchange.Redis самостоятельно управляет логикой повторного подключения.
Очистка ресурсов.
RedisСлужба реализуетIDisposableправильное закрытие подключения при завершении работы приложения.Интеграция логирования: клиент Redis работает с .NET для обеспечения единого ведения журнала.
Устранение неполадок
| Проблема | Резолюция |
|---|---|
No connection is available |
Проверьте формат конечной точки и порт (10000). Убедитесь, что экземпляр Redis предоставлен и доступен. |
AuthenticationFailedException |
Запустите az login для обновления учетных данных. Убедитесь, что ваша учетная запись добавлена в качестве пользователя Redis в разделе "Проверка подлинности" меню "Ресурсы". |
Unauthorized |
Убедитесь, что идентификатор Microsoft Entra ID добавлен в качестве пользователя Redis в управляемом экземпляре Redis Azure. Дополнительные сведения см. в разделе "Использование идентификатора Microsoft Entra для проверки подлинности кэша". |