Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V tomto článku se dozvíte, jak se ověřovat pomocí namespaces Azure Event Grid s použitím webhooku nebo Azure Function.
Ověřování webhooku umožňuje externím koncovým bodům HTTP (webhookům nebo funkcím) dynamicky ověřovat připojení protokolu Message Queuing Telemetry Transport (MQTT). Tato metoda používá ověřování webového tokenu JSON v Microsoft Entra ID k zajištění zabezpečeného přístupu.
Když se klient pokusí připojit, zprostředkovatel vyvolá uživatelem definovaný koncový bod HTTP, který ověřuje přihlašovací údaje, jako jsou tokeny sdíleného přístupového podpisu, uživatelská jména a hesla, nebo dokonce provádí kontroly seznamu odvolaných certifikátů. Webhook vyhodnocuje požadavek a vrátí rozhodnutí o povolení nebo zamítnutí připojení spolu s volitelnými metadaty pro jemně odstupňovanou autorizaci. Tento přístup podporuje flexibilní a centralizované zásady ověřování napříč různými skupinami zařízení a případy použití.
Požadavky
- Obor názvů Event Gridu, který má buď identitu spravovanou systémem, nebo identitu spravovanou uživatelem.
- Externí webhook nebo funkce Azure
- Přístup byl udělen spravované identitě oboru názvů služby Event Grid pro funkci Azure nebo webhook.
Základní kroky
Pokud chcete pro obory názvů použít vlastní ověřování webhooku, postupujte takto:
- Vytvořte obor názvů a nakonfigurujte jeho dílčí zdroje.
- Povolte spravovanou identitu v oboru názvů služby Event Grid.
- Udělte spravované identitě přístup k funkci Azure nebo webhooku.
- Nakonfigurujte nastavení vlastního webhooku v oboru názvů Event Grid.
- Připojte své klienty k Event Grid názvovému prostoru a získejte ověření pomocí webhooku nebo funkce.
Vytvořte jmenný prostor a nakonfigurujte jeho dílčí zdroje
Pokud chcete vytvořit obor názvů a nakonfigurovat jeho dílčí zdroje, postupujte podle pokynů v rychlém startu: Publikování a přihlášení k odběru zpráv MQTT v oboru názvů Event Gridu pomocí webu Azure Portal. Přeskočte kroky k vytvoření certifikátu a klienta, protože identity klientů pocházejí z poskytnutého tokenu. Atributy klienta jsou založené na specifických tvrzeních v tokenu klienta. Atributy klienta se používají v dotazu skupiny klientů, proměnných šablon tématu a konfiguraci rozšiřování směrování.
Povolte spravovanou identitu ve vaší oblasti názvů Event Grid
Pokud chcete ve svém oboru názvů Event Gridu povolit spravovanou identitu přiřazenou systémem, použijte následující příkaz:
az eventgrid namespace update --resource-group <resource group name> --name <namespace name> --identity "{type:systemassigned}"
Informace o konfiguraci systémových a uživatelem přiřazených identit pomocí webu Azure Portal najdete v tématu Povolení spravované identity pro obor názvů služby Event Grid.
Implementace
Možnost 1: Webhook prostřednictvím implementace Azure Functions (Aplikace Microsoft Entra)
Azure Functions může logiku webhooku hostovat pomocí Microsoft.Identity.Web k automatickému ověření tokenu. K ověření tokenů volajícího služby Event Grid potřebujete registraci aplikace Microsoft Entra pro rozhraní API webhooku. Registrace aplikace má URI ID aplikace pro vystavování tokenů. Na straně klienta (Event Grid) už je spravovaná identita.
Výhody:
- Žádná infrastruktura ke správě
- Integrované ověřovací nástroje (
Microsoft.Identity.Web) - Odolná, škálovatelná a nákladově efektivní
Funkce musí provádět následující operace:
- Ověřte token volajícího ze spravované identity Event Gridu.
- Ověřte webový token JSON klienta (JWT).
- Vrátí odpověď JSON s povolením nebo zamítnutím.
Možnost 2: Implementace externího koncového bodu HTTPS
Tato implementace může být libovolným externím koncovým bodem HTTPS (libovolný cloud, libovolné backend řešení), využívající knihovny Microsoft.IdentityModel pro ověřování JWT pomocí Microsoft Entra ID.
Použijte libovolný modul runtime: .NET, Node.js, Java nebo Python.
Klíčové požadavky:
Koncový bod musí být HTTPS.
Musí ověřit JWT volajícího.
Musí ověřit JWT zařízení.
Musí reagovat během časového limitu (doporučuje se přibližně 5 sekund).
Udělení vhodného přístupu spravované identity k funkci nebo webhooku
Udělte spravované identitě vašeho oboru názvů Event Gridu odpovídající přístupová práva k cílové funkci Azure nebo webhooku.
Pokud chcete nastavit vlastní ověřování pro funkci Azure, postupujte podle dalších kroků.
Vytvoření aplikace Microsoft Entra
Na stránce Přehled aplikace si poznamenejte hodnotu ID aplikace (klienta).
V nabídce vlevo vyberte Zveřejnit rozhraní API. Vedle identifikátoru URI ID aplikace vyberte Přidat.
Poznamenejte si hodnotu identifikátoru URI ID aplikace v podokně Upravit identifikátor URI ID aplikace a pak vyberte Uložit.
Nastavení ověřování pro funkci Azure
Pokud máte vytvořenou základní funkci Azure z webu Azure Portal, nastavte ověřování a ověřte token ID Microsoft Entra, který byl vytvořen pomocí spravované identity.
Přejděte do aplikace Azure Functions.
V nabídce vlevo vyberte Ověřování a pak vyberte Přidat zprostředkovatele identity.
Na stránce Přidat zprostředkovatele identity vyberte v rozevíracím seznamu Microsoft.
V části Registrace aplikace zadejte hodnoty následujících vlastností:
V části Cílové skupiny s povolenými tokeny zadejte povolené cílové skupiny tokenů. Pokud chcete být konkrétní, zadejte identifikátor URI ID aplikace Microsoft Entra, kterou jste si poznamenali dříve. Cílová skupina tokenů slouží k ověření příchozího tokenu z Event Gridu.
V části Další kontroly postupujte takto:
V části Nastavení ověřování služby App Service postupujte takto:
Zvolte další nastavení podle vašich konkrétních požadavků a pak vyberte Přidat.
Generování a použití tokenu Microsoft Entra ID
Teď vygenerujte a používejte token MICROSOFT Entra ID.
- Vygenerujte token Microsoft Entra ID s použitím spravované identity a identifikátoru URI aplikace (
api://<ClientID>) jako prostředku. - Tento token použijte k vyvolání funkce Azure tak, že ji zahrnete do hlavičky požadavku.
Konfigurace přizpůsobených nastavení ověřování webhooku v oboru názvů Event Grid.
Pomocí Azure Portal a Azure CLI nakonfigurujte vlastní nastavení ověřování webhooku v oboru názvů Event Grid. Nejprve vytvoříte obor názvů a pak ho aktualizujete.
Použití portálu Azure Portal
V Azure portálu přejděte do svého oboru názvů Event Grid.
Na stránce Obor názvů Event Grid vyberte v levé nabídce Konfigurace.
V části Vlastní ověřování webhooku zadejte hodnoty těchto vlastností:
- Typ spravované identity: Vyberte přiřazeného uživatele.
- Adresa URL webhooku: Zadejte hodnotu koncového bodu adresy URL, kde služba Event Grid odesílá ověřené požadavky webhooku pomocí zadané spravované identity.
- Identifikátor URI cílové skupiny tokenů: Zadejte hodnotu ID aplikace Microsoft Entra nebo identifikátoru URI pro získání přístupového tokenu, který se má zahrnout jako nosný token v žádostech o doručení.
- ID tenanta Microsoft Entra: Zadejte hodnotu ID tenanta Microsoft Entra použité k získání nosného tokenu pro ověřené doručování webhooku.
Vyberte a použijte.
Použití Azure CLI
Pokud chcete aktualizovat obor názvů pomocí vlastní konfigurace ověřování webhooku, použijte následující příkaz:
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"
Nahraďte <NAMESPACE_NAME> a <RESOURCE_GROUP_NAME> nahraďte skutečnými hodnotami. Vyplňte pole v předplatném, skupině prostředků, identitě, ID aplikace, URL adrese a ID tenanta. Pokud chcete zvýšit výkon a spolehlivost ověřování založeného na webhooku pro zprostředkovatele Event Grid MQTT, doporučujeme povolit podporu PROTOKOLU HTTP/2 pro koncový bod webhooku.
Podrobnosti rozhraní API webhooku
Hlavičky žádosti
Azure Event Grid odešle do webhooku následující hlavičky v požadavku:
Authorization: Bearer <token>
Token Microsoft Entra je určen pro spravovanou identitu, která byla nakonfigurována k volání webhooku.
Obsah žádosti
{
"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>"
}
Popisy polí datového obsahu
| Pole | Povinné nebo volitelné | Popis |
|---|---|---|
clientId |
Povinné | ID klienta z paketu MQTT CONNECT |
userName |
Volitelný | Uživatelské jméno z paketu MQTT CONNECT |
password |
Volitelný | Heslo z paketu MQTT CONNECT v kódování Base64 |
authenticationMethod |
Volitelný | Metoda ověřování z paketu MQTT CONNECT (pouze MQTT5). |
authenticationData |
Volitelný | Ověřovací data z paketu MQTT CONNECT v kódování Base64 (pouze MQTT5). |
clientCertificate |
Volitelný | Klientský certifikát ve formátu Privacy-Enhanced Mail (PEM). |
clientCertificateChain |
Volitelný | Další certifikáty poskytované klientem potřebné k sestavení řetězu z klientského certifikátu k certifikátu certifikační autority. |
Odpověďové zatížení
Úspěšná odpověď
HTTP/1.1 200 OK
Content-Type: application/json
{
"decision": "allow",
"clientAuthenticationName": "<string>",
"attributes": {
"attr": "<int/string/array_of_strings>",
...
},
"expiration": "<unix time format>"
}
Odepřená odpověď
HTTP/1.1 200 OK
Content-Type: application/json
{
"decision": "deny",
"errorReason": "<string>"
}
Kódy chyb:
| Výsledek ověřování | Odpověď funkce | MQTT důvodový kód Event Grid |
|---|---|---|
| Explicitní odepření autorizace | "decision": "deny" |
Neautorizováno |
| Neplatný token nebo token s vypršenou platností | "decision": "deny" |
Neautorizováno |
| Časový limit funkce | N/A | Server není k dispozici |
| Výjimka funkce / chyba | N/A | Server není k dispozici |
| Přechodné selhání platformy | N/A | Server není k dispozici |
| Vnitřní chyba zpracování brokeru | N/A | Server není k dispozici |
Popisy polí odpovědi
| Pole | Typ | Požadováno v případě, že | Popis |
|---|---|---|---|
decision |
string (allow | deny) |
Vždy se vyžaduje | Rozhodnutí o ověřování vrácené službou Povolené hodnoty jsou allow nebo deny. |
clientAuthenticationName |
řetězec | Požadováno v případě, že decision = allow |
Název identity klienta (například ID zařízení nebo ID klienta). |
attributes |
objekt (slovník) | Volitelné, pokud decision = allow |
Páry klíč-hodnota představující další atributy. Hodnoty můžou být int, string nebo pole řetězců. |
expiration |
integer (unixové časové razítko, sekundy) | Volitelné, pokud decision = allow |
Doba vypršení platnosti rozhodnutí o autorizaci vyjádřená jako unixový čas (sekundy od epochy). Příklad: 1713782400. |
errorReason |
řetězec | Volitelné, pokud decision = deny |
Chybová zpráva popisující, proč byl požadavek odepřen. Tato hodnota se protokoluje pro diagnostiku. |
Příklady podporovaných typů atributů
"num_attr_pos": 1,
"num_attr_neg": -1,
"str_attr": "str_value",
"str_list_attr": [
"str_value_1",
"str_value_2"
]
Všechny správné datové typy (číslo, které se hodí <int32/string/array_of_strings>) se používají jako atributy. V příkladu num_attr_pos, num_attr_neg, str_attr a str_list_attr mají nároky správné datové typy a jsou použity jako atributy.