Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Служба Azure SignalR поддерживает Microsoft Entra ID для авторизации запросов из управляемых удостоверений для ресурсов Azure.
В этой статье объясняется, как настроить ресурс и код для авторизации запросов к ресурсу с помощью управляемого удостоверения.
Настройка управляемых удостоверений
Первым шагом является настройка управляемых удостоверений в приложении или виртуальной машине.
- Настройка управляемых удостоверений для Служб приложений и функций Azure
- Настройка управляемых удостоверений на виртуальных машинах Azure
- Настройка управляемых удостоверений для ресурсов Azure в масштабируемом наборе виртуальных машин
Добавление назначений ролей в портал Azure
Ниже описаны шаги по назначению учетной записи службы или управляемой идентичности на роль сервера приложений SignalR для ресурса службы Azure SignalR. Подробные инструкции см. в статье Назначение ролей Azure с помощью портала Microsoft Azure.
Примечание.
Вы можете назначить роль на любую область, включая группу управления, подписку, группу ресурсов или один ресурс. Дополнительные сведения об области действия см. в статье Понимание области действия Azure RBAC.
В портале Azure перейдите к ресурсу вашей Службы Azure SignalR.
На левой панели выберите Управление доступом (IAM).
Выберите Добавить>Добавить назначение ролей.
На вкладке "Роль" выберите "Сервер приложений SignalR". Другие встроенные роли службы Azure SignalR зависят от вашего сценария.
Должность Описание Вариант использования Сервер приложений SignalR Доступ к API-интерфейсам, которые создают подключения сервера и создают ключи. Чаще всего используется для сервера приложений с ресурсом Azure SignalR, работающим в режиме по умолчанию. Владелец службы SignalR Полный доступ ко всем API-интерфейсам плоскостей данных, включая REST API, API-интерфейсы, создающие подключения к серверу, и API-интерфейсы, которые создают ключи и токены. Используется для сервера переговоров с ресурсом службы Azure SignalR, работающим в бессерверном режиме. Для этого требуются разрешения REST API и разрешения API проверки подлинности. Владелец REST API SignalR Полный доступ к REST API уровня передачи данных. Используется для пакета SDK управления Azure SignalR для управления подключениями и группами, но он не делает подключения к серверу или обрабатывает запросы на согласование. Средство чтения REST API SignalR Доступ только для чтения к REST API уровня управления данными. Используется при написании инструмента мониторинга, который вызывает REST API интерфейсы только для чтения. Нажмите кнопку Далее.
Для приложения Microsoft Entra:
- В строке Назначение доступа выберите Пользователь, группа или сервисный принципал.
- В строке "Члены" выберите выбрать членов и затем выберите идентификатор во всплывающем окне.
Для управляемой идентичности ресурсов Azure:
- В строке "Назначение доступа" выберите управляемое удостоверение.
- В поле "Члены" выберите участников, и затем выберите приложение во всплывающем окне.
Нажмите кнопку Далее.
Проверьте назначение, а затем нажмите кнопку "Проверить и назначить ", чтобы подтвердить назначение роли.
Внимание
Для распространения новых добавленных назначений ролей может потребоваться до 30 минут.
Дополнительные сведения о назначении ролей Azure и управлении ими см. в следующем разделе:
- Назначение ролей Azure с помощью портала Azure
- Назначение ролей Azure с помощью REST API
- Назначение ролей Azure с помощью Azure PowerShell
- Назначение ролей Azure с помощью Azure CLI
- Назначение ролей Azure с помощью шаблонов Azure Resource Manager
Настройка пакета SDK для сервера приложений Microsoft.Azure.SignalR для C#
Пакет SDK для сервера Azure SignalR для C#
Пакет SDK для сервера Azure SignalR использует библиотеку Azure.Identity для создания маркеров для подключения к ресурсам. Щелкните, чтобы изучить подробные сведения об использовании.
Использовать назначенную системой идентичность
services.AddSignalR().AddAzureSignalR(option =>
{
option.Endpoints = new ServiceEndpoint[]
{
new ServiceEndpoint(new Uri("https://<resource-name>.service.signalr.net"), new ManagedIdentityCredential()),
};
});
Использование назначенного пользователем идентификатора
Внимание
Используйте идентификатор клиента, а не идентификатор основного объекта
services.AddSignalR().AddAzureSignalR(option =>
{
option.Endpoints = new ServiceEndpoint[]
{
var clientId = "<your-user-assigned-identity-client-id>";
new ServiceEndpoint(new Uri("https://<resource-name>.service.signalr.net"), new ManagedIdentityCredential(clientId)),
};
});
Дополнительные примеры см. по этой ссылке
Использование нескольких конечных точек
Учетные данные могут отличаться для разных конечных точек.
В этом примере пакет SDK Azure SignalR будет подключаться к resource1 с помощью управляемой идентификации, назначенной системой, и подключаться к resource2 с помощью управляемой идентификации, назначенной пользователем.
services.AddSignalR().AddAzureSignalR(option =>
{
option.Endpoints = new ServiceEndpoint[]
{
var clientId = "<your-user-assigned-identity-client-id>";
new ServiceEndpoint(new Uri("https://<resource1>.service.signalr.net"), new ManagedIdentityCredential()),
new ServiceEndpoint(new Uri("https://<resource2>.service.signalr.net"), new ManagedIdentityCredential(clientId)),
};
});
Привязки службы Azure SignalR в Azure Functions
Привязки Azure SignalR Service в Azure Functions используют параметры приложения на портале или локально использующий local.settings.json для настройки управляемого удостоверения для доступа к ресурсам вашей Azure SignalR Service.
Для конфигурации идентичности может потребоваться группа пар "ключ-значение". Ключи всех пар "ключ-значение" должны начинаться с префикса имени подключения (который по умолчанию используется AzureSignalRConnectionString) и разделителя. Разделитель — это подчеркивание (__) на портале и двоеточие (:) локально. Префикс можно настроить, используя свойство привязки ConnectionStringSetting.
Использовать назначенную системой идентичность
Если вы настроите только URI службы, используйте этот класс DefaultAzureCredential. Этот класс полезен, если вы хотите совместно использовать ту же конфигурацию в Azure и локальных средах разработки. Сведения о том, как это работает, см. в разделе DefaultAzureCredential.
На портале Azure используйте следующий пример для настройки DefaultAzureCredential. Если вы не настраиваете ни одну из этих переменных среды, удостоверение, назначаемое системой, используется для проверки подлинности.
<CONNECTION_NAME_PREFIX>__serviceUri=https://<SIGNALR_RESOURCE_NAME>.service.signalr.net
Вот пример конфигурации DefaultAzureCredential в файле local.settings.json. На локальном уровне нет управляемого удостоверения. Проверка подлинности с помощью Visual Studio, Azure CLI и учетных записей Azure PowerShell выполняется по порядку.
{
"Values": {
"<CONNECTION_NAME_PREFIX>:serviceUri": "https://<SIGNALR_RESOURCE_NAME>.service.signalr.net"
}
}
Если вы хотите использовать назначаемое системой удостоверение независимо и без влияния других переменных среды, задайте ключу с префиксом имени подключения значение credentialmanagedidentity. Ниже приведен пример параметров приложения:
<CONNECTION_NAME_PREFIX>__serviceUri = https://<SIGNALR_RESOURCE_NAME>.service.signalr.net
<CONNECTION_NAME_PREFIX>__credential = managedidentity
Использовать идентификацию, назначаемую пользователем
Если вы хотите использовать удостоверение, назначаемое пользователем, необходимо назначить clientId вместе с ключами serviceUri и credential с префиксом имени подключения. Ниже приведен пример параметров приложения:
<CONNECTION_NAME_PREFIX>__serviceUri = https://<SIGNALR_RESOURCE_NAME>.service.signalr.net
<CONNECTION_NAME_PREFIX>__credential = managedidentity
<CONNECTION_NAME_PREFIX>__clientId = <CLIENT_ID>
Следующие шаги
См. следующие статьи по этой теме: