Udostępnij za pośrednictwem


Autoryzowanie żądań do zasobów usługi Azure SignalR Service za pomocą tożsamości zarządzanych firmy Microsoft Entra

Usługa Azure SignalR Service obsługuje identyfikator Entra firmy Microsoft do autoryzowania żądań z tożsamości zarządzanych przez firmę Microsoft Entra.

W tym artykule pokazano, jak skonfigurować zasób i kod usługi Azure SignalR Service w celu autoryzowania żądań do zasobu z tożsamości zarządzanej.

Konfigurowanie tożsamości zarządzanych

Pierwszym krokiem jest skonfigurowanie tożsamości zarządzanych.

W tym przykładzie pokazano, jak skonfigurować tożsamość zarządzaną przypisaną przez system w usłudze App Service przy użyciu witryny Azure Portal:

  1. Uzyskaj dostęp do ustawień aplikacji w witrynie Azure Portal w grupie Ustawienia w okienku nawigacji po lewej stronie.

  2. Wybierz Tożsamość.

  3. Na karcie Przypisane przez system przełącz pozycję Stan na Włączone. Kliknij przycisk Zapisz.

    Zrzut ekranu pokazujący, gdzie przełączyć pozycję Stan na Wł., a następnie wybierz pozycję Zapisz.

Aby dowiedzieć się więcej na temat konfigurowania tożsamości zarządzanych na inne sposoby aplikacja systemu Azure Service i Azure Functions, zobacz How to use managed identities for App Service and Azure Functions (Jak używać tożsamości zarządzanych dla usług App Service i Azure Functions).

Aby dowiedzieć się więcej na temat konfigurowania tożsamości zarządzanych na maszynie wirtualnej platformy Azure, zobacz Konfigurowanie tożsamości zarządzanych na maszynach wirtualnych platformy Azure

Dodawanie przypisań ról w witrynie Azure Portal

W poniższych krokach opisano sposób przypisywania roli serwera aplikacji Usługi SignalR do tożsamości przypisanej przez system za pośrednictwem zasobu usługi Azure SignalR Service. Aby uzyskać szczegółowe instrukcje, zobacz Przypisywanie ról platformy Azure przy użyciu witryny Azure Portal.

Uwaga

Rolę można przypisać do dowolnego zakresu, w tym grupy zarządzania, subskrypcji, grupy zasobów lub pojedynczego zasobu. Aby dowiedzieć się więcej na temat zakresu, zobacz Omówienie zakresu kontroli dostępu opartej na rolach platformy Azure.

  1. W witrynie Azure Portal przejdź do zasobu usługi Azure SignalR Service.

  2. Wybierz pozycję Kontrola dostępu (IAM).

  3. Wybierz pozycję Dodaj>Dodaj przypisanie roli.

    Zrzut ekranu przedstawiający stronę kontroli dostępu i wyborów dotyczących dodawania przypisania roli.

  4. Na karcie Rola wybierz pozycję SignalR App Server.

  5. Na karcie Członkowie wybierz pozycję Tożsamość zarządzana, a następnie wybierz pozycję Wybierz członków.

  6. Wybierz subskrypcję platformy Azure.

  7. Wybierz pozycję Tożsamość zarządzana przypisana przez system, wyszukaj maszynę wirtualną, do której chcesz przypisać rolę, a następnie wybierz ją.

  8. Na karcie Przeglądanie i przypisywanie wybierz pozycję Przejrzyj i przypisz, aby przypisać rolę.

Ważne

Propagowanie przypisań ról platformy Azure może potrwać do 30 minut.

Aby dowiedzieć się więcej na temat przypisywania ról platformy Azure i zarządzania nimi, zobacz następujące artykuły:

Konfigurowanie aplikacji

Serwer aplikacji

Używanie tożsamości przypisanej przez system

Zestaw SDK usługi Azure SignalR obsługuje parametry połączenia oparte na tożsamościach. Jeśli konfiguracja jest ustawiona w zmiennych środowiskowych serwera aplikacji, nie musisz ponownie wdrażać serwera aplikacji, ale po prostu zmiana konfiguracji w celu migracji z klucza dostępu do tożsamości usługi zarządzanej. Na przykład zaktualizuj zmienną środowiskową Azure__SignalR__ConnectionString serwera aplikacji na Endpoint=https://<resource1>.service.signalr.net;AuthType=azure.msi;Version=1.0;. Lub ustaw w kodzie DI.

services.AddSignalR().AddAzureSignalR("Endpoint=https://<resource1>.service.signalr.net;AuthType=azure.msi;Version=1.0;");

Poza tym możesz użyć opcji DefaultAzureCredential lub ManagedIdentityCredential , aby skonfigurować punkty końcowe usługi Azure SignalR Service. Najlepszym rozwiązaniem jest bezpośrednie użycie ManagedIdentityCredential .

Zwróć uwagę, że tożsamość zarządzana przypisana przez system jest używana domyślnie, ale upewnij się, że nie skonfigurowano żadnych zmiennych środowiskowych zachowanych przez element EnvironmentCredential , jeśli używasz polecenia DefaultAzureCredential. W przeciwnym razie usługa Azure SignalR Service wraca do użycia EnvironmentCredential w celu wykonania żądania, co zwykle powoduje Unauthorized odpowiedź.

Ważne

Usuń Azure__SignalR__ConnectionString , jeśli w ten sposób wystąpiły zmienne środowiskowe. Azure__SignalR__ConnectionString zostanie użyty do utworzenia domyślnego ServiceEndpoint z priorytetem i może uruchomić serwer aplikacji nieoczekiwanie używać klucza dostępu.

services.AddSignalR().AddAzureSignalR(option =>
{
    option.Endpoints = new ServiceEndpoint[]
    {
        new ServiceEndpoint(new Uri("https://<resource1>.service.signalr.net"), new ManagedIdentityCredential()),
    };
});

Używanie tożsamości przypisanej przez użytkownika

Podaj ClientId podczas tworzenia ManagedIdentityCredential obiektu.

Ważne

Użyj identyfikatora klienta, a nie identyfikatora obiektu (podmiotu zabezpieczeń), nawet jeśli są one identyfikatorami GUID.

Użyj parametry połączenia opartej na tożsamościach.

services.AddSignalR().AddAzureSignalR("Endpoint=https://<resource1>.service.signalr.net;AuthType=azure.msi;ClientId=<your-user-identity-client-id>;Version=1.0;");

Lub skompiluj za pomocą polecenia ServiceEndpoint ManagedIdentityCredential.

services.AddSignalR().AddAzureSignalR(option =>
{
    option.Endpoints = new ServiceEndpoint[]
    {
        var clientId = "<your-user-identity-client-id>";
        new ServiceEndpoint(new Uri("https://<resource1>.service.signalr.net"), new ManagedIdentityCredential(clientId)),
    };
});

Powiązania usługi Azure SignalR Service w usłudze Azure Functions

Powiązania usługi Azure SignalR Service w usłudze Azure Functions używają ustawień aplikacji w portalu lub local.settings.json lokalnie w celu skonfigurowania tożsamości zarządzanej w celu uzyskania dostępu do zasobów usługi Azure SignalR Service.

Do skonfigurowania tożsamości może być potrzebna grupa par klucz/wartość. Klucze wszystkich par klucz/wartość muszą rozpoczynać się od prefiksu nazwy połączenia (domyślnie ) AzureSignalRConnectionStringi separatora. Separator to podkreślenie (__) w portalu i dwukropek (:) lokalnie. Prefiks można dostosować przy użyciu właściwości ConnectionStringSettingbinding .

Używanie tożsamości przypisanej przez system

Jeśli skonfigurujesz tylko identyfikator URI usługi, użyjesz DefaultAzureCredential klasy . Ta klasa jest przydatna, gdy chcesz współużytkować tę samą konfigurację w środowiskach deweloperskich platformy Azure i lokalnych. Aby dowiedzieć się, jak to działa, zobacz DefaultAzureCredential.

W witrynie Azure Portal użyj poniższego przykładu, aby skonfigurować DefaultAzureCredentialusługę . Jeśli nie skonfigurujesz żadnej z tych zmiennych środowiskowych, tożsamość przypisana przez system zostanie użyta do uwierzytelniania.

<CONNECTION_NAME_PREFIX>__serviceUri=https://<SIGNALR_RESOURCE_NAME>.service.signalr.net

Oto przykład DefaultAzureCredential konfiguracji w pliku local.settings.json . W zakresie lokalnym nie ma tożsamości zarządzanej. Uwierzytelnianie za pomocą programu Visual Studio, interfejsu wiersza polecenia platformy Azure i kont programu Azure PowerShell jest podejmowane w określonej kolejności.

{
  "Values": {
    "<CONNECTION_NAME_PREFIX>:serviceUri": "https://<SIGNALR_RESOURCE_NAME>.service.signalr.net"
  }
}

Jeśli chcesz niezależnie używać tożsamości przypisanej przez system i bez wpływu innych zmiennych środowiskowych, ustaw credential klucz z prefiksem nazwy połączenia na managedidentitywartość . Oto przykład ustawień aplikacji:

<CONNECTION_NAME_PREFIX>__serviceUri = https://<SIGNALR_RESOURCE_NAME>.service.signalr.net
<CONNECTION_NAME_PREFIX>__credential = managedidentity

Używanie tożsamości przypisanej przez użytkownika

Jeśli chcesz użyć tożsamości przypisanej przez użytkownika, musisz przypisać clientId oprócz serviceUri kluczy i credential z prefiksem nazwy połączenia. Oto przykład ustawień aplikacji:

<CONNECTION_NAME_PREFIX>__serviceUri = https://<SIGNALR_RESOURCE_NAME>.service.signalr.net
<CONNECTION_NAME_PREFIX>__credential = managedidentity
<CONNECTION_NAME_PREFIX>__clientId = <CLIENT_ID>

Następne kroki

Zobacz następujące powiązane artykuły: