Sdílet prostřednictvím


Ověřování pomocí zprostředkovatele MQTT pomocí vlastního ověřování webhooku

V tomto článku se dozvíte, jak se ověřovat pomocí oborů názvů Azure Event Gridu pomocí webhooku nebo funkce Azure.

Ověřování webhooku umožňuje externím koncovým bodům HTTP (webhooky nebo funkce) dynamicky ověřovat připojení přenosu telemetrie služby Řízení front zpráv (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 s spravovanou identitou přiřazenou systémem nebo přiřazenou uživatelem.
  • Externí webhook nebo funkce Azure
  • Přístup 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:

  1. Vytvořte obor názvů a nakonfigurujte jeho dílčí zdroje.
  2. Povolte spravovanou identitu v oboru názvů služby Event Grid.
  3. Udělte spravované identitě přístup k funkci Azure nebo webhooku.
  4. Nakonfigurujte vlastní nastavení webhooku v oboru názvů Služby Event Grid.
  5. 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í.

Povolení spravované identity v oboru názvů Služby 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.

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

  1. Vytvořte aplikaci Microsoft Entra v Microsoft Entra ID.

  2. Na stránce Přehled aplikace si poznamenejte hodnotu ID aplikace (klienta).

    Snímek obrazovky znázorňující stránku Přehled aplikace Microsoft Entra ID se zvýrazněným ID aplikace (klienta)

  3. V nabídce vlevo vyberte Zveřejnit rozhraní API. Vedle identifikátoru URI ID aplikace vyberte Přidat.

  4. Poznamenejte si hodnotu identifikátoru URI ID aplikace v podokně Upravit identifikátor URI ID aplikace a pak vyberte Uložit.

    Snímek obrazovky znázorňující identifikátor URI ID aplikace Microsoft Entra

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.

  1. Přejděte do aplikace Azure Functions.

  2. V nabídce vlevo vyberte Ověřování a pak vyberte Přidat zprostředkovatele identity.

    Snímek obrazovky se stránkou Ověřování

  3. Na stránce Přidat zprostředkovatele identity jako zprostředkovatele identity vyberte v rozevíracím seznamu Microsoft.

  4. V části Registrace aplikace zadejte hodnoty následujících vlastností:

    1. ID aplikace (klienta): Zadejte ID klienta aplikace Microsoft Entra, kterou jste si poznamenali dříve.

    2. Adresa URL vystavitele: Přidejte adresu URL vystavitele ve formuláři https://login.microsoftonline.com/<tenantid>/v2.0.

      Snímek obrazovky znázorňující přidání zprostředkovatele identity s Microsoftem jako zprostředkovatele identity

  5. Pro cílové skupiny povolených tokenů přidejte hodnotu identifikátoru URI ID aplikace Microsoft Entra, kterou jste si poznamenali dříve.

  6. V části Další kontroly pro vývoj klientských aplikací vyberte Povolit požadavky z konkrétních klientských aplikací.

  7. V podokně Povolené klientské aplikace zadejte ID klienta spravované identity přiřazené systémem, která se používá k vygenerování tokenu. Toto ID najdete v podnikové aplikaci prostředku Microsoft Entra ID.

  8. Zvolte další nastavení podle vašich konkrétních požadavků a pak vyberte Přidat.

Teď vygenerujte a používejte token MICROSOFT Entra ID.

  1. Vygenerujte token ID Microsoft Entra pomocí spravované identity s identifikátorem URI ID aplikace jako prostředky.
  2. 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í webu Azure Portal a Azure CLI nakonfigurujte vlastní nastavení ověřování webhooku v oboru názvů Služby Event Grid. Nejprve vytvoříte obor názvů a pak ho aktualizujete.

Použití portálu Azure Portal

  1. Na webu Azure Portal přejděte do svého oboru názvů Event Gridu.

  2. Na stránce Obor názvů Event Grid vyberte v levé nabídce Konfigurace.

  3. V části Vlastní ověřování webhooku zadejte hodnoty následujících vlastností:

    1. Typ spravované identity: Vyberte přiřazeného uživatele.
    2. 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.
    3. 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í.
    4. 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.
  4. Vyberte a použijte.

    Snímek obrazovky znázorňující konfiguraci ověřování webhooku pro obor názvů služby Event Grid

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 zástupné symboly v předplatném, skupině prostředků, identitě, ID aplikace, adrese URL 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, důrazně doporučujeme povolit podporu PROTOKOLU HTTP/2 pro koncový bod webhooku.

Podrobnosti rozhraní API webhooku

Hlavičky žádosti

Autorizace: Nosný token

Token je token Microsoft Entra pro spravovanou identitu, která byla nakonfigurována pro 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 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.
userProperties Volitelný Vlastnosti uživatele z paketu CONNECT (pouze MQTT5).

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 400 Bad Request 
Content-Type: application/json 

{ 
    "decision": "deny", 
    "errorReason": "<string>" 
}

Popisy polí odpovědi

Pole Popis
decision (povinné) Rozhodnutí o ověřování je buď allow nebo deny.
clientAuthenticationName Název pro ověření klienta (jméno identity). (Požadováno při decision nastavení na allowhodnotu .)
attributes Slovník s atributy. Klíč je název atributu a hodnota je int/string/array. (Volitelné, pokud decision je nastavená hodnota allow.)
expiration Datum vypršení platnosti ve formátu Unix time. (Volitelné, pokud decision je nastavená hodnota allow.)
errorReason Chybová zpráva, pokud decision je nastavena na deny. Tato chyba se protokoluje. (Volitelné, pokud decision je nastavená hodnota deny.)

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_negstr_attra str_list_attr deklarace identity mají správné datové typy a jsou použity jako atributy.