Авторизация запросов на Служба Azure SignalR ресурсов с помощью приложений Microsoft Entra
Служба Azure SignalR поддерживает идентификатор Microsoft Entra для авторизации запросов из Приложения Microsoft Entra.
В этой статье показано, как настроить Служба Azure SignalR ресурс и коды для авторизации запросов к ресурсу из приложения Microsoft Entra.
Регистрация приложения
Первым шагом является регистрация приложения Microsoft Entra:
В портал Azure найдите и выберите идентификатор Microsoft Entra.
В разделе Управление выберите Регистрация приложений.
Выберите Создать регистрацию. Откроется область регистрации приложения .
В поле "Имя" введите отображаемое имя приложения.
Нажмите кнопку "Регистрация", чтобы подтвердить регистрацию.
После регистрации приложения можно найти значения идентификатора приложения (клиента) и идентификатора каталога (клиента) на странице обзора приложения. Эти идентификаторы GUID могут быть полезны в следующих шагах.
Дополнительные сведения о регистрации приложения см. в кратком руководстве по регистрации приложения с помощью платформа удостоверений Майкрософт.
Добавить учетные данные
Вы можете также добавить сертификаты и секреты клиента (строку) в качестве учетных данных для регистрации конфиденциального клиентского приложения.
Секрет клиента
Приложению требуется секрет клиента, чтобы подтвердить свое удостоверение при запросе маркера. Чтобы создать секрет клиента, выполните следующие действия.
В разделе Управление выберите Сертификаты и секреты.
На вкладке Секреты клиента выберите Новый секрет клиента.
Введите описание секрета клиента и выберите время окончания срока действия.
Скопируйте значение секрета клиента и вставьте его в безопасное расположение.
Примечание.
Секрет отображается только один раз.
Сертификат
Вместо создания секрета клиента можно отправить сертификат.
Дополнительные сведения о добавлении учетных данных см. в статье "Добавление учетных данных".
Добавление назначений ролей в портал Azure
Ниже описано, как назначить роль сервера приложений SignalR субъекту-службе (приложению) через ресурс Служба Azure SignalR. Подробные инструкции см. в статье Назначение ролей Azure с помощью портала Microsoft Azure.
Примечание.
Роль можно назначить любой области, включая группу управления, подписку, группу ресурсов или один ресурс. Дополнительные сведения о области см. в статье "Общие сведения о области azure RBAC".
В портал Azure перейдите к ресурсу Служба Azure SignalR.
Выберите Управление доступом (IAM).
Выберите Добавить>Добавить назначение ролей.
На вкладке "Роль" выберите "Сервер приложений SignalR".
На вкладке "Участники" выберите "Пользователь", "Группа" или "Субъект-служба", а затем выберите "Выбрать участников".
Найдите и выберите приложение, которому нужно назначить роль.
Чтобы назначить роль, на вкладке Проверка и назначение выберите Проверка и назначение.
Внимание
Для распространения назначений ролей Azure может потребоваться до 30 минут.
Дополнительные сведения о назначении ролей Azure и управлении ими см. в следующих статьях:
- Назначение ролей Azure с помощью портала Azure
- Назначение ролей Azure с помощью REST API
- Назначение ролей Azure с помощью Azure PowerShell
- Назначение ролей Azure с помощью Azure CLI
- Назначение ролей Azure с помощью шаблонов Azure Resource Manager
Настройка приложения
Сервер приложений
Рекомендуется настроить удостоверение и учетные данные в переменных среды:
«Переменная» | Description |
---|---|
AZURE_TENANT_ID |
Идентификатор клиента Microsoft Entra. |
AZURE_CLIENT_ID |
Идентификатор клиента (приложения) для регистрации приложения в клиенте. |
AZURE_CLIENT_SECRET |
Секрет клиента, созданный для регистрации приложения. |
AZURE_CLIENT_CERTIFICATE_PATH |
Путь к паре сертификатов и закрытого ключа в формате PEM или PFX, который может пройти проверку подлинности регистрации приложения. |
AZURE_USERNAME |
Имя пользователя, также известное как имя участника-пользователя (UPN) учетной записи пользователя Microsoft Entra. |
AZURE_PASSWORD |
Пароль учетной записи пользователя Microsoft Entra. Пароль не поддерживается для учетных записей с включенной многофакторной проверкой подлинности. |
Для настройки конечных точек Служба Azure SignalR можно использовать DefaultAzureCredential или EnvironmentCredential. Ниже приведен код для DefaultAzureCredential
:
services.AddSignalR().AddAzureSignalR(option =>
{
option.Endpoints = new ServiceEndpoint[]
{
new ServiceEndpoint(new Uri("https://<resource-name>.service.signalr.net"), new DefaultAzureCredential())
};
});
Ниже приведен код для EnvironmentCredential
:
services.AddSignalR().AddAzureSignalR(option =>
{
option.Endpoints = new ServiceEndpoint[]
{
new ServiceEndpoint(new Uri("https://<resource-name>.service.signalr.net"), new EnvironmentCredential())
};
});
Сведения о DefaultAzureCredential
работе см. в разделе "Класс DefaultAzureCredential".
Использование учетных данных для конкретной конечной точки
В организации может потребоваться использовать разные учетные данные для разных конечных точек.
В этом сценарии можно использовать ClientSecretCredential или ClientCertificateCredential:
services.AddSignalR().AddAzureSignalR(option =>
{
var credential1 = new ClientSecretCredential("tenantId", "clientId", "clientSecret");
var credential2 = new ClientCertificateCredential("tenantId", "clientId", "pathToCert");
option.Endpoints = new ServiceEndpoint[]
{
new ServiceEndpoint(new Uri("https://<resource1>.service.signalr.net"), credential1),
new ServiceEndpoint(new Uri("https://<resource2>.service.signalr.net"), credential2),
};
});
привязки Служба Azure SignalR в Функции Azure
Служба Azure SignalR привязки в Функции Azure используют параметры приложения на портале или local.settings.json локально для настройки удостоверений приложений Microsoft Entra для доступа к ресурсам Служба Azure SignalR.
Сначала необходимо указать URI службы Служба Azure SignalR. Ключом URI службы является serviceUri
. Он начинается с префикса имени подключения (который по умолчанию используется AzureSignalRConnectionString
) и разделителя. Разделитель — это подчеркивание (__
) в портал Azure и двоеточие (:
) в файле local.settings.json. Имя подключения можно настроить с помощью свойства ConnectionStringSetting
привязки. Продолжайте чтение, чтобы найти пример.
Затем вы можете настроить удостоверение приложения Microsoft Entra в предопределенных переменных среды или в указанных переменных SignalR.
Настройка удостоверения в предопределенных переменных среды
См . переменные среды для списка предопределенных переменных среды. При наличии нескольких служб рекомендуется использовать одно и то же удостоверение приложения, чтобы не нужно настраивать удостоверение для каждой службы. Другие службы также могут использовать эти переменные среды на основе параметров этих служб.
Например, чтобы использовать учетные данные секрета клиента, настройте удостоверение следующим образом в файле local.settings.json :
{
"Values": {
"<CONNECTION_NAME_PREFIX>:serviceUri": "https://<SIGNALR_RESOURCE_NAME>.service.signalr.net",
"AZURE_CLIENT_ID": "...",
"AZURE_CLIENT_SECRET": "...",
"AZURE_TENANT_ID": "..."
}
}
В портал Azure добавьте следующие параметры:
<CONNECTION_NAME_PREFIX>__serviceUri=https://<SIGNALR_RESOURCE_NAME>.service.signalr.net
AZURE_CLIENT_ID = ...
AZURE_TENANT_ID = ...
AZURE_CLIENT_SECRET = ...
Настройка удостоверения в переменных SignalR
Указанные в SignalR переменные используют один и тот же префикс ключа с ключом serviceUri
. Ниже приведен список переменных, которые можно использовать:
clientId
clientSecret
tenantId
Ниже приведены примеры использования учетных данных секрета клиента в файле local.settings.json :
{
"Values": {
"<CONNECTION_NAME_PREFIX>:serviceUri": "https://<SIGNALR_RESOURCE_NAME>.service.signalr.net",
"<CONNECTION_NAME_PREFIX>:clientId": "...",
"<CONNECTION_NAME_PREFIX>:clientSecret": "...",
"<CONNECTION_NAME_PREFIX>:tenantId": "..."
}
}
В портал Azure добавьте следующие параметры:
<CONNECTION_NAME_PREFIX>__serviceUri = https://<SIGNALR_RESOURCE_NAME>.service.signalr.net
<CONNECTION_NAME_PREFIX>__clientId = ...
<CONNECTION_NAME_PREFIX>__clientSecret = ...
<CONNECTION_NAME_PREFIX>__tenantId = ...
Следующие шаги
См. следующие статьи по этой теме: