Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Usługa Azure SignalR Service obsługuje identyfikator Entra firmy Microsoft na potrzeby autoryzowania żądań za pomocą aplikacji Firmy Microsoft Entra.
W tym artykule wyjaśniono, jak skonfigurować zasób i kod w celu uwierzytelniania żądań do zasobu przy użyciu aplikacji Firmy Microsoft Entra.
Rejestrowanie aplikacji w Microsoft Entra ID
Pierwszym krokiem jest zarejestrowanie aplikacji w identyfikatorze Entra firmy Microsoft:
Po zarejestrowaniu aplikacji można znaleźć wartości Identyfikator aplikacji (klienta) i Identyfikator katalogu (dzierżawy) na stronie przeglądu aplikacji. Te GUID-y mogą być przydatne w poniższych krokach.
Dodaj poświadczenia
Po zarejestrowaniu aplikacji można dodać certyfikaty, tajne klucze klienta (ciąg) lub poświadczenia tożsamości federacyjnej jako poświadczenia do rejestracji poufnej aplikacji klienckiej. Poświadczenia umożliwiają aplikacji uwierzytelnianie się samodzielnie, bez konieczności interakcji z użytkownikiem w czasie wykonywania i są używane przez poufne aplikacje klienckie, które uzyskują dostęp do internetowego interfejsu API.
Dodawanie przypisań ról w Azure Portal
W poniższych krokach opisano, jak przypisać rolę serwera aplikacji SignalR do jednostki usługi lub tożsamości zarządzanej dla zasobu 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 dla Azure RBAC.
W witrynie Azure Portal przejdź do zasobu usługi Azure SignalR Service.
W lewym okienku nawigacji wybierz Kontrola dostępu (IAM).
Wybierz pozycję Dodaj>Dodaj przypisanie roli.
Na karcie Rola wybierz pozycję SignalR App Server. Inne wbudowane role usługi Azure SignalR Service zależą od twojego scenariusza.
Role Description Przypadek użycia SignalR App Server Dostęp do interfejsów API umożliwiających tworzenie połączeń serwera i generowanie kluczy. Najczęściej używany dla serwera aplikacji z zasobem usługi Azure SignalR uruchomionym w trybie domyślnym. Właściciel usługi SignalR Service Pełny dostęp do wszystkich interfejsów API płaszczyzny danych, w tym interfejsów API REST, interfejsów API tworzących połączenia serwera oraz interfejsów API generujących klucze/tokeny. Używany na potrzeby serwera negocjacji z zasobem usługi Azure SignalR Service działającym w trybie bezserwerowym. Wymaga zarówno uprawnień interfejsu API REST, jak i uprawnień interfejsu API uwierzytelniania. Właściciel interfejsu API REST usługi SignalR Pełny dostęp do interfejsów API REST płaszczyzny danych. Służy do zarządzania połączeniami i grupami za pomocą zestawu SDK zarządzania usługą Azure SignalR , ale nie wykonuje połączeń serwera ani nie obsługuje żądań negocjacji. Czytnik interfejsu API REST usługi SignalR Dostęp tylko do odczytu do REST API płaszczyzny danych. Używane podczas pisania narzędzia do monitorowania, które wywołuje interfejsy API REST tylko do odczytu. Wybierz Dalej.
W przypadku aplikacji Entra firmy Microsoft:
- W wierszu Przypisz dostęp wybierz pozycję Użytkownik, grupa lub jednostka usługi.
- W wierszu Członkowie wybierz wybierz członków, a następnie wybierz tożsamość w wyskakującym oknie.
W przypadku tożsamości zarządzanej dla zasobów platformy Azure:
- W wierszu Przypisz dostęp wybierz pozycję Tożsamość zarządzana.
- W wierszu Członkowie wybierz pozycję Wybierz członków, a następnie wybierz aplikację w oknie wyskakującym.
Wybierz Dalej.
Przejrzyj swój przydział, a następnie wybierz Przejrzyj i przypisz, aby potwierdzić przypisanie roli.
Ważne
Propagacja nowo dodanych przypisań ról może potrwać do 30 minut.
Aby dowiedzieć się więcej na temat przypisywania ról platformy Azure i zarządzania nimi, zobacz:
- Przypisywanie ról platformy Azure przy użyciu witryny Azure Portal
- Przypisywanie ról platformy Azure przy użyciu interfejsu API REST
- Przypisywanie ról platformy Azure przy użyciu programu Azure PowerShell
- Przypisywanie ról platformy Azure przy użyciu interfejsu wiersza polecenia platformy Azure
- Przypisywanie ról platformy Azure przy użyciu szablonów usługi Azure Resource Manager
Konfigurowanie zestawu SDK serwera aplikacji Microsoft.Azure.SignalR dla języka C#
Zestaw SDK serwera Usługi Azure SignalR dla języka C#
Zestaw SDK serwera usługi Azure SignalR korzysta z biblioteki Azure.Identity do generowania tokenów na potrzeby nawiązywania połączenia z zasobami. Kliknij, aby zapoznać się ze szczegółowymi użyciami.
Uwaga
Identyfikator tenantId musi być zgodny z identyfikatorem dzierżawy, w której znajduje się zasób usługi SignalR.
Używanie aplikacji Microsoft Entra z certyfikatem
services.AddSignalR().AddAzureSignalR(option =>
{
var credential = new ClientCertificateCredential("tenantId", "clientId", "path-to-cert");
option.Endpoints = [
new ServiceEndpoint(new Uri(), "https://<resource>.service.signalr.net"), credential);
];
});
Używanie aplikacji Microsoft Entra z kluczem tajnym klienta
services.AddSignalR().AddAzureSignalR(option =>
{
var credential = new ClientSecretCredential("tenantId", "clientId", "clientSecret");
option.Endpoints = [
new ServiceEndpoint(new Uri(), "https://<resource>.service.signalr.net"), credential);
];
});
Korzystanie z aplikacji Microsoft Entra z tożsamością federacyjną
W przypadku, gdy organizacja wyłączyła użycie klucza tajnego klienta/certyfikatu, można skonfigurować aplikację tak, aby ufała tożsamości zarządzanej na potrzeby uwierzytelniania.
Więcej informacji znajdziesz w sekcji Konfigurowanie aplikacji, aby zaufać tożsamości zarządzanej (wersja próbna).
Uwaga
Konfigurowanie aplikacji, aby ufała tożsamości zarządzanej, jest funkcją w wersji zapoznawczej.
services.AddSignalR().AddAzureSignalR(option =>
{
var msiCredential = new ManagedIdentityCredential("msiClientId");
var credential = new ClientAssertionCredential("tenantId", "appClientId", async (ctoken) =>
{
// Entra ID US Government: api://AzureADTokenExchangeUSGov
// Entra ID China operated by 21Vianet: api://AzureADTokenExchangeChina
var request = new TokenRequestContext([$"api://AzureADTokenExchange/.default"]);
var response = await msiCredential.GetTokenAsync(request, ctoken).ConfigureAwait(false);
return response.Token;
});
option.Endpoints = [
new ServiceEndpoint(new Uri(), "https://<resource>.service.signalr.net"), credential);
];
});
To poświadczenie użyje zarządzanej tożsamości przypisanej przez użytkownika, aby wygenerować clientAssertion i użyje go do wymiany na clientToken uwierzytelniania.
Element appClientId i tenantId powinien być aplikacją korporacyjną, którą aprowizowano w dzierżawie zasobu SignalR.
Używanie wielu punktów końcowych
Poświadczenia mogą być różne dla różnych punktów końcowych.
W tym przykładzie SDK Azure SignalR połączy się z resource1 za pomocą tajnego klucza klienta i z resource2 przy użyciu certyfikatu.
services.AddSignalR().AddAzureSignalR(option =>
{
var credential1 = new ClientSecretCredential("tenantId", "clientId", "clientSecret");
var credential2 = new ClientCertificateCredential("tenantId", "clientId", "path-to-cert");
option.Endpoints = new ServiceEndpoint[]
{
new ServiceEndpoint(new Uri("https://<resource1>.service.signalr.net"), credential1),
new ServiceEndpoint(new Uri("https://<resource2>.service.signalr.net"), credential2),
};
});
Więcej przykładów można znaleźć w tym linku przykładowym
Powiązania usługi Azure SignalR Service w usłudze Azure Functions
Powiązania usługi Azure SignalR Service w Azure Functions korzystają z ustawień aplikacji dostępnych w portalu lub local.settings.json lokalnie, aby konfigurować tożsamości aplikacji Microsoft Entra do uzyskiwania dostępu do zasobów usługi Azure SignalR Service.
Najpierw należy określić identyfikator URI usługi azure SignalR Service. Klucz URI usługi to serviceUri. Zaczyna się od prefiksu nazwy połączenia (który domyślnie ma wartość AzureSignalRConnectionString) i separatora. Separator to podkreślnik (__) w Azure Portal i dwukropek (:) w pliku local.settings.json. Nazwę połączenia można dostosować przy użyciu właściwości powiązania ConnectionStringSetting. Kontynuuj czytanie, aby znaleźć przykład.
Następnie należy wybrać, czy skonfigurować tożsamość aplikacji Microsoft Entra w wstępnie zdefiniowanych zmiennych środowiskowych, czy w zmiennych określonych przez signalR.
Konfigurowanie tożsamości w wstępnie zdefiniowanych zmiennych środowiskowych
Zobacz Zmienne środowiskowe , aby uzyskać listę wstępnie zdefiniowanych zmiennych środowiskowych. Jeśli masz wiele usług, zalecamy użycie tej samej tożsamości aplikacji, aby nie trzeba było konfigurować tożsamości dla każdej usługi. Inne usługi mogą również używać tych zmiennych środowiskowych na podstawie ustawień tych usług.
Aby na przykład użyć tajnych poświadczeń klienta, skonfiguruj tożsamość w następujący sposób w pliku local.settings.json:
{
"Values": {
"<CONNECTION_NAME_PREFIX>:serviceUri": "https://<SIGNALR_RESOURCE_NAME>.service.signalr.net",
"AZURE_CLIENT_ID": "...",
"AZURE_CLIENT_SECRET": "...",
"AZURE_TENANT_ID": "..."
}
}
W witrynie Azure Portal dodaj ustawienia w następujący sposób:
<CONNECTION_NAME_PREFIX>__serviceUri=https://<SIGNALR_RESOURCE_NAME>.service.signalr.net
AZURE_CLIENT_ID = ...
AZURE_TENANT_ID = ...
AZURE_CLIENT_SECRET = ...
Konfigurowanie tożsamości w zmiennych określonych przez SignalR
Zmienne określone przez usługę SignalR współdzielą ten sam prefiks klucza z kluczem serviceUri . Oto lista zmiennych, których można użyć:
clientIdclientSecrettenantId
Poniżej przedstawiono przykłady używania tajnych poświadczeń klienta w pliku 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": "..."
}
}
W witrynie Azure Portal dodaj ustawienia w następujący sposób:
<CONNECTION_NAME_PREFIX>__serviceUri = https://<SIGNALR_RESOURCE_NAME>.service.signalr.net
<CONNECTION_NAME_PREFIX>__clientId = ...
<CONNECTION_NAME_PREFIX>__clientSecret = ...
<CONNECTION_NAME_PREFIX>__tenantId = ...
Następne kroki
Zobacz następujące powiązane artykuły: