Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule pokazano, jak uwierzytelniać się w przestrzeniach nazw usługi Azure Event Grid przy użyciu elementu webhook lub funkcji platformy Azure.
Uwierzytelnianie elementu webhook umożliwia dynamiczne uwierzytelnianie połączeń przesyłania danych telemetrycznych (MQTT) zewnętrznych punktów końcowych HTTP (webhook lub functions). Ta metoda używa weryfikacji tokenu internetowego JSON identyfikatora JSON firmy Microsoft w celu zapewnienia bezpiecznego dostępu.
Gdy klient próbuje nawiązać połączenie, broker wywołuje zdefiniowany przez użytkownika punkt końcowy HTTP, który weryfikuje poświadczenia, takie jak tokeny sygnatury dostępu współdzielonego, nazwy użytkowników i hasła, a nawet sprawdza listę odwołania certyfikatów. Element webhook ocenia żądanie i zwraca decyzję o umożliwieniu lub odmowie połączenia wraz z opcjonalnymi metadanymi na potrzeby szczegółowej autoryzacji. Takie podejście obsługuje elastyczne i scentralizowane zasady uwierzytelniania w różnych flotach urządzeń i przypadkach użycia.
Wymagania wstępne
- Przestrzeń nazw usługi Event Grid z tożsamością zarządzaną przypisaną przez system lub przypisaną przez użytkownika.
- Zewnętrzny element webhook lub funkcja platformy Azure.
- Dostęp udzielony tożsamości zarządzanej przestrzeni nazw usługi Event Grid do funkcji platformy Azure lub elementu webhook.
Kroki na wysokim poziomie
Aby użyć niestandardowego uwierzytelniania webhook dla przestrzeni nazw, wykonaj następujące kroki:
- Utwórz przestrzeń nazw i skonfiguruj jej zasoby podrzędne.
- Włącz tożsamość zarządzaną w przestrzeni nazw usługi Event Grid.
- Udziel tożsamości zarządzanej dostępu do funkcji platformy Azure lub elementu webhook.
- Skonfiguruj niestandardowe ustawienia elementu webhook w przestrzeni nazw usługi Event Grid.
- Połącz klientów z przestrzenią nazw usługi Event Grid i uwierzytelniaj ich za pomocą webhooka lub funkcji.
Tworzenie przestrzeni nazw i konfigurowanie jej podzasobów
Aby utworzyć przestrzeń nazw i skonfigurować jej podźródła, postępuj zgodnie z instrukcjami w przewodniku Szybki start: publikowanie i subskrybowanie komunikatów MQTT w przestrzeni nazw usługi Event Grid za pomocą witryny Azure Portal. Pomiń kroki tworzenia certyfikatu i klienta, ponieważ tożsamości klienta pochodzą z podanego tokenu. Atrybuty klienta są oparte na niestandardowych twierdzeniach w jego tokenie. Atrybuty klienta są używane w zapytaniu grupy klienta, zmiennych szablonu tematu i konfiguracji wzbogacania routingu.
Włączanie tożsamości zarządzanej w przestrzeni nazw usługi Event Grid
Aby włączyć tożsamość zarządzaną przypisaną przez system w przestrzeni nazw usługi Event Grid, użyj następującego polecenia:
az eventgrid namespace update --resource-group <resource group name> --name <namespace name> --identity "{type:systemassigned}"
Aby uzyskać informacje na temat konfigurowania tożsamości systemu i tożsamości przypisanych przez użytkownika przy użyciu witryny Azure Portal, zobacz Włączanie tożsamości zarządzanej dla przestrzeni nazw usługi Event Grid.
Udzielanie tożsamości zarządzanej odpowiedniego dostępu do funkcji lub elementu webhook
Nadaj zaawansowanej identyfikacji przestrzeni nazw Event Grid odpowiednie uprawnienia dostępu do docelowej funkcji Azure lub webhooka.
Aby skonfigurować uwierzytelnianie niestandardowe dla funkcji platformy Azure, wykonaj następne kroki.
Tworzenie aplikacji Microsoft Entra
Utwórz aplikację Microsoft Entra w identyfikatorze Entra firmy Microsoft.
Na stronie Przegląd aplikacji zanotuj wartość Identyfikator aplikacji (klienta).
W menu po lewej stronie wybierz pozycję Uwidaczniaj interfejs API. Obok pozycji Identyfikator URI identyfikatora aplikacji wybierz pozycję Dodaj.
Zanotuj wartość identyfikatora URI aplikacji w okienku Edytowanie identyfikatora URI aplikacji , a następnie wybierz pozycję Zapisz.
Konfigurowanie uwierzytelniania dla funkcji platformy Azure
Jeśli masz podstawową funkcję platformy Azure utworzoną w witrynie Azure Portal, skonfiguruj uwierzytelnianie i zweryfikuj token identyfikatora Entra firmy Microsoft, który został utworzony przy użyciu tożsamości zarządzanej.
Przejdź do aplikacji usługi Azure Functions.
W menu po lewej stronie wybierz pozycję Uwierzytelnianie, a następnie wybierz pozycję Dodaj dostawcę tożsamości.
Na stronie Dodawanie dostawcy tożsamości w polu Dostawca tożsamości wybierz pozycję Microsoft z listy rozwijanej.
W sekcji Rejestracja aplikacji określ wartości następujących właściwości:
W polu Dozwolone grupy odbiorców tokenów dodaj wartość identyfikatora URI identyfikatora aplikacji firmy Microsoft zanotowaną wcześniej.
W sekcji Dodatkowe kontrole w obszarze Tworzenie aplikacji klienckich wybierz pozycję Zezwalaj na żądania z określonych aplikacji klienckich.
W okienku Dozwolone aplikacje klienckie wprowadź identyfikator klienta przypisanej przez system tożsamości zarządzanej używanej do generowania tokenu. Ten identyfikator można znaleźć w aplikacji przedsiębiorstwa zasobu Microsoft Entra ID.
Wybierz inne ustawienia na podstawie określonych wymagań, a następnie wybierz pozycję Dodaj.
Teraz wygeneruj i użyj tokenu identyfikatora Entra firmy Microsoft.
- Wygeneruj token identyfikatora entra firmy Microsoft przy użyciu tożsamości zarządzanej z identyfikatorem URI identyfikatora aplikacji jako zasobami.
- Użyj tego tokenu, aby wywołać funkcję platformy Azure, dołączając ją do nagłówka żądania.
Skonfiguruj niestandardowe ustawienia uwierzytelniania webhooka w przestrzeni nazw Event Grid
Skonfiguruj niestandardowe ustawienia uwierzytelniania elementu webhook w przestrzeni nazw usługi Event Grid przy użyciu witryny Azure Portal i interfejsu wiersza polecenia platformy Azure. Najpierw utworzysz przestrzeń nazw, a następnie zaktualizujesz ją.
Korzystanie z witryny Azure Portal
Przejdź do przestrzeni nazw usługi Event Grid w witrynie Azure Portal.
Na stronie usługi Event Grid Przestrzeń nazw wybierz Konfiguracja w menu po lewej stronie.
W sekcji Uwierzytelnianie niestandardowego elementu webhook określ wartości następujących właściwości:
- Typ tożsamości zarządzanej: wybierz pozycję Przypisany użytkownik.
- Adres URL elementu webhook: wprowadź wartość punktu końcowego adresu URL, w którym usługa Event Grid wysyła uwierzytelnione żądania elementu webhook przy użyciu określonej tożsamości zarządzanej.
- Identyfikator URI odbiorców tokenu: wprowadź wartość identyfikatora aplikacji Entra firmy Microsoft lub identyfikatora URI, aby uzyskać token dostępu, który ma zostać uwzględniony jako token elementu nośnego w żądaniach dostarczania.
- Identyfikator dzierżawy microsoft Entra ID: wprowadź wartość identyfikatora dzierżawy entra firmy Microsoft używanego do uzyskania tokenu elementu nośnego do uwierzytelnionego dostarczania elementu webhook.
Wybierz i zastosuj.
Korzystaj z Azure CLI
Aby zaktualizować przestrzeń nazw przy użyciu niestandardowej konfiguracji uwierzytelniania elementu webhook, użyj następującego polecenia:
az eventgrid namespace update \
--resource-group <resource-group-name> \
--name <namespace-name> \
--api-version 2025-04-01-preview \
--identity-type UserAssigned \
--identity-user-assigned-identities "/subscriptions/XXXXXXXXXXX/resourcegroups/XXXXXXXXXXX/providers/Microsoft.ManagedIdentity/userAssignedIdentities/XXXXXXXXXXX={}" \
--set properties.isZoneRedundant=true \
properties.topicSpacesConfiguration.state=Enabled \
properties.topicSpacesConfiguration.clientAuthentication.webHookAuthentication.identity.type=UserAssigned \
properties.topicSpacesConfiguration.clientAuthentication.webHookAuthentication.identity.userAssignedIdentity="/subscriptions/XXXXXXXXXXX/resourcegroups/XXXXXXXXXXX/providers/Microsoft.ManagedIdentity/userAssignedIdentities/XXXXXXXXXXX" \
properties.topicSpacesConfiguration.clientAuthentication.webHookAuthentication.endpointUrl="https://XXXXXXXXXXX" \
properties.topicSpacesConfiguration.clientAuthentication.webHookAuthentication.azureActiveDirectoryApplicationIdOrUri="api://XXXXXXXXXXX/.default" \
properties.topicSpacesConfiguration.clientAuthentication.webHookAuthentication.azureActiveDirectoryTenantId="XXXXXXXXXXX"
Zastąp <NAMESPACE_NAME> wartości i <RESOURCE_GROUP_NAME> wartościami rzeczywistymi. Wypełnij symbole zastępcze w subskrypcji, grupie zasobów, tożsamości, identyfikatorze aplikacji, adresie URL i identyfikatorze dzierżawy. Aby zwiększyć wydajność i niezawodność uwierzytelniania opartego na elementach webhook dla brokera MQTT usługi Event Grid, zdecydowanie zalecamy włączenie obsługi protokołu HTTP/2 dla punktu końcowego elementu webhook.
Szczegóły interfejsu API webhook
Nagłówki zapytań
Autoryzacja: token elementu nośnego
Token jest tokenem firmy Microsoft Entra dla tożsamości zarządzanej, która została skonfigurowana do wywoływania elementu webhook.
Dane żądania
{
"clientId": "<string>",
"userName": "<string>",
"password": "<base64 encoded bytes>",
"authenticationMethod": "<string>",
"authenticationData": "<base64 encoded bytes>",
"clientCertificate": "<certificate in PEM format>",
"clientCertificateChain": "<certificates from chain in PEM format>"
}
Opisy pól ładunku
| (No changes needed) | Wymagane/opcjonalne | Opis |
|---|---|---|
clientId |
Wymagane | Identyfikator klienta z pakietu MQTT CONNECT. |
userName |
Opcjonalnie | Nazwa użytkownika z pakietu MQTT CONNECT. |
password |
Opcjonalnie | Hasło z pakietu MQTT CONNECT w kodowaniu Base64. |
authenticationMethod |
Opcjonalnie | Metoda uwierzytelniania z pakietu MQTT CONNECT (tylko MQTT5). |
authenticationData |
Opcjonalnie | Dane uwierzytelniania z pakietu MQTT CONNECT w kodowaniu Base64 (tylko MQTT5). |
clientCertificate |
Opcjonalnie | Certyfikat klienta w formacie PEM. |
clientCertificateChain |
Opcjonalnie | Inne certyfikaty udostępniane przez klienta wymagane do utworzenia łańcucha z certyfikatu klienta do certyfikatu urzędu certyfikacji. |
userProperties |
Opcjonalnie | Właściwości użytkownika z pakietu CONNECT (tylko MQTT5). |
Ładunek danych odpowiedzi
Odpowiedź pomyślna
HTTP/1.1 200 OK
Content-Type: application/json
{
"decision": "allow",
"clientAuthenticationName": "<string>",
"attributes": {
"attr": "<int/string/array_of_strings>",
...
},
"expiration": "<unix time format>"
}
Odmowa odpowiedzi
HTTP/1.1 400 Bad Request
Content-Type: application/json
{
"decision": "deny",
"errorReason": "<string>"
}
Opisy pól odpowiedzi
| (No changes needed) | Opis |
|---|---|
decision (wymagane) |
Decyzja dotycząca uwierzytelniania to allow albo .deny |
clientAuthenticationName |
Nazwa uwierzytelniania klienta (nazwa tożsamości). (Wymagane, gdy decision jest ustawiona wartość allow.) |
attributes |
Słownik z atrybutami. Klucz jest nazwą atrybutu, a wartość jest int/string/array. (Opcjonalnie, gdy decision jest ustawiona wartość allow.) |
expiration |
Data wygaśnięcia w formacie czasu uniksowego. (Opcjonalnie, gdy decision jest ustawiona wartość allow.) |
errorReason |
Komunikat o błędzie, jeśli decision jest ustawiony na denywartość . Ten błąd jest rejestrowany. (Opcjonalnie, gdy decision jest ustawiona wartość deny.) |
Przykłady obsługiwanych typów atrybutów
"num_attr_pos": 1,
"num_attr_neg": -1,
"str_attr": "str_value",
"str_list_attr": [
"str_value_1",
"str_value_2"
]
Wszystkie poprawne typy danych (numer pasujący <int32/string/array_of_strings>) są używane jako atrybuty. W tym przykładzie num_attr_posoświadczenia , num_attr_negstr_attri str_list_attr mają poprawne typy danych i są używane jako atrybuty.