Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a cikk bemutatja, hogyan lehet hitelesíteni az Azure Event Grid névtereket egy webhook vagy Azure-függvény használatával.
A webhook-hitelesítés lehetővé teszi a külső HTTP-végpontok (webhookok vagy függvények) számára a Message Queuing Telemetry Transport (MQTT) kapcsolatok dinamikus hitelesítését. Ez a módszer a Microsoft Entra ID JSON webes jogkivonatának érvényesítését használja a biztonságos hozzáférés biztosítása érdekében.
Amikor egy ügyfél megpróbál csatlakozni, a közvetítő meghív egy felhasználó által definiált HTTP-végpontot, amely érvényesíti a hitelesítő adatokat, például közös hozzáférésű jogosultságkód-jogkivonatokat, felhasználóneveket és jelszavakat, vagy akár visszavont tanúsítványok listájának ellenőrzését is végrehajtja. A webhook kiértékeli a kérést, és visszaad egy döntést, amely engedélyezi vagy megtagadja a kapcsolatot, valamint az opcionális metaadatokat a részletes engedélyezéshez. Ez a megközelítés támogatja a rugalmas és központosított hitelesítési szabályzatokat a különböző eszközflotta és használati esetek között.
Előfeltételek
- Event Grid-névtér rendszer által hozzárendelt vagy felhasználó által hozzárendelt felügyelt identitással.
- Külső webhook vagy Azure-függvény.
- Az Event Grid névtér felügyelt identitásának hozzáférése engedélyezve van az Azure-függvényhez vagy a webhookhoz.
Magas szintű lépések
Ha egyéni webhook-hitelesítést szeretne használni a névterekhez, kövesse az alábbi lépéseket:
- Hozzon létre egy névteret, és konfigurálja annak alerőforrásait.
- Felügyelt identitás engedélyezése az Event Grid-névtérben.
- Adjon hozzáférést a felügyelt identitásnak az Azure-függvényhez vagy a webhookhoz.
- Egyéni webhookbeállítások konfigurálása az Event Grid-névtérben.
- Csatlakoztassa az ügyfeleket az Event Grid névtérhez, és hitelesítse magát a webhookon vagy a függvényen keresztül.
Névtér létrehozása és alforrásainak konfigurálása
Névtér létrehozásához és alforrásainak konfigurálásához kövesse a rövid útmutató utasításait: MQTT-üzenetek közzététele és feliratkozás egy Event Grid-névtéren az Azure Portallal. Hagyja ki a tanúsítvány és az ügyfél létrehozásának lépéseit, mert az ügyfélidentitások a megadott jogkivonatból származnak. Az ügyfél jellemzői az ügyfél tokenben található egyedi jogosultságokon alapulnak. Az ügyfélattribútumok az ügyfélcsoport lekérdezésében, a témakörsablon változóiban és az útválasztási bővítés konfigurációjában használatosak.
Felügyelt identitás engedélyezése az Event Grid-névtérben
Ha engedélyezni szeretne egy rendszer által hozzárendelt felügyelt identitást az Event Grid-névtérben, használja a következő parancsot:
az eventgrid namespace update --resource-group <resource group name> --name <namespace name> --identity "{type:systemassigned}"
A rendszer és a felhasználó által hozzárendelt identitások Azure Portallal történő konfigurálásáról további információt az Event Grid-névtér felügyelt identitásának engedélyezése című témakörben talál.
Megvalósítások
1. lehetőség: Webhook az Azure Functions implementálása (Microsoft Entra App)
Azure Functions üzemeltetheti a webhook logikáját a Microsoft.Identity.Web használatával a jogkivonat automatikus érvényesítéséhez. Az Event Grid-hívó jogkivonatok érvényesítéséhez Microsoft Entra alkalmazásregisztrációra van szükség a webhook API-hoz. Az alkalmazásregisztrációnak van egy alkalmazásazonosító URI-ja a tokenek kiállításához. Az ügyféloldal (Event Grid) már rendelkezik felügyelt identitással.
Előnyök:
- Nincs kezelendő infrastruktúra
- Beépített hitelesítési segítők (
Microsoft.Identity.Web) - Tartós, méretezhető, költséghatékony
A függvénynek a következő műveleteket kell végrehajtania:
- Ellenőrizze a hívó jogkivonatát az Event Grid által kezelt identitás alapján.
- Hitelesítse az ügyfél JSON webes tokenjét (JWT).
- Adjon vissza egy engedélyező vagy elutasító JSON-választ.
2. lehetőség: Külső HTTPS-végpont implementálása
Ez az implementáció bármilyen külső HTTPS-végpont lehet (bármilyen felhő, bármely háttérrendszer), amely a Microsoft Entra ID JWT-érvényesítést Microsoft.IdentityModel használja kódtárakkal.
Használjon bármilyen futtatókörnyezetet: .NET, Node.js, Java vagy Python.
Főbb követelmények:
A végpontnak HTTPS-nek kell lennie.
Validálnia kell a hívó JWT-t.
Ellenőriznie kell az eszköz JWT-jét.
Az időkorláton belül kell válaszolnia (körülbelül 5 másodperc ajánlott).
A felügyelt identitás megfelelő hozzáférésének biztosítása egy függvényhez vagy webhookhoz
Adja meg az Event Grid-névtér felügyelt identitásának a megfelelő hozzáférést a cél Azure-függvényhez vagy webhookhoz.
Ha egyéni hitelesítést szeretne beállítani egy Azure-függvényhez, kövesse a következő lépéseket.
Microsoft Entra alkalmazás létrehozása
Microsoft Entra-alkalmazás létrehozása a Microsoft Entra-azonosítóban.
Az alkalmazás Áttekintés lapján jegyezze fel az alkalmazás (ügyfél) azonosítójának értékét.
A bal oldali menüben válassza az API-k felfedése lehetőséget. Az alkalmazásazonosító URI-ja mellett válassza a Hozzáadás lehetőséget.
Jegyezze fel az alkalmazásazonosító URI-értékét az Alkalmazásazonosító URI szerkesztése panelen, majd válassza a Mentés lehetőséget.
Hitelesítés beállítása Azure-függvényhez
Ha alapszintű Azure-függvényt hozott létre az Azure Portálon, állítsa be a hitelesítést, és ellenőrizze a felügyelt identitással létrehozott Microsoft Entra-azonosító tokent.
Nyissa meg az Azure Functions-alkalmazást.
A bal oldali menüben válassza a Hitelesítés, majd az Identitásszolgáltató hozzáadása lehetőséget.
Az Identitásszolgáltató hozzáadása lapon válassza a Microsoftot a legördülő listából.
Az Alkalmazásregisztráció szakaszban adja meg az alábbi tulajdonságok értékeit:
A Token által engedélyezett célközönségek szakaszban adja meg az engedélyezett célközönségeket. Pontosabban adja meg a korábban feljegyzett Microsoft Entra alkalmazásazonosító URI-ját. A jogkivonat célközönsége az Event Gridből érkező bejövő jogkivonat ellenőrzésére szolgál.
A További ellenőrzések szakaszban kövesse az alábbi lépéseket:
Az App Service hitelesítési beállításai szakaszban kövesse az alábbi lépéseket:
Válasszon más beállításokat a megadott követelmények alapján, majd válassza a Hozzáadás lehetőséget.
A Microsoft Entra ID-jogkivonat létrehozása és használata
Most hozza létre és használja a Microsoft Entra ID tokent.
- Hozzon létre egy Microsoft Entra-azonosító jogkivonatot a kezelt identitás használatával erőforrásként, az alkalmazásazonosító URI (
api://<ClientID>) megadásával. - Ezzel a jogkivonattal meghívhatja az Azure-függvényt a kérés fejlécében.
Egyéni webhook-hitelesítési beállítások konfigurálása az Event Grid-névtérben
Egyéni webhook-hitelesítési beállítások konfigurálása az Event Grid-névtéren az Azure Portal és az Azure CLI használatával. Először létre kell hoznia a névteret, majd frissítenie kell.
Az Azure Portal használata
Nyissa meg az Event Grid-névteret az Azure Portalon.
Az Event Grid Névtér lapján válassza a Bal oldali menü Konfiguráció elemét.
Az Egyéni Webhook-hitelesítés szakaszban adja meg az alábbi tulajdonságok értékeit:
- Felügyelt identitás típusa: Válassza ki a hozzárendelt felhasználót.
- Webhook URL-címe: Adja meg annak az URL-végpontnak az értékét, amelyben az Event Grid szolgáltatás hitelesített webhook-kérelmeket küld a megadott felügyelt identitás használatával.
- Jogkivonat célközönségének URI-ja: Adja meg a Microsoft Entra alkalmazásazonosítójának vagy URI-jának értékét, hogy lekérje a hozzáférési jogkivonatot, amelyet tulajdonosi jogkivonatként szeretne szerepeltetni a kézbesítési kérelmekben.
- Microsoft Entra ID bérlőazonosító: Adja meg a Hitelesített webhook-kézbesítés tulajdonosi jogkivonatának beszerzéséhez használt Microsoft Entra-bérlőazonosító értékét.
Válassza az Alkalmazás lehetőséget.
Az Azure parancssori felületének használata
Ha a névteret az egyéni webhook-hitelesítési konfigurációval szeretné frissíteni, használja a következő parancsot:
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"
Cserélje le <NAMESPACE_NAME> és <RESOURCE_GROUP_NAME> a tényleges értékekre. Adja meg az előfizetés, az erőforráscsoport, az identitás, az alkalmazásazonosító, az URL-cím és a bérlőazonosító helykitöltőit. Az Event Grid MQTT-közvetítő webhookalapú hitelesítésének teljesítményének és megbízhatóságának javítása érdekében javasoljuk, hogy engedélyezze a HTTP/2 támogatását a webhook végpontjához.
Webhook API részletei
HTTP-kérés fejlécek
Az Azure Event Grid a következő fejléceket küldi el a kérésben a webhooknak:
Authorization: Bearer <token>
A jogkivonat egy Microsoft Entra-jogkivonat a webhook meghívására konfigurált felügyelt identitáshoz.
Hasznos adatok kérése
{
"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>"
}
Terhelési mezők leírásai
| szakterület | Kötelező/nem kötelező | Leírás |
|---|---|---|
clientId |
Kötelező | Ügyfélazonosító az MQTT CONNECT-csomagból. |
userName |
Opcionális | Felhasználónév az MQTT CONNECT-csomagból. |
password |
Opcionális | Jelszó az MQTT CONNECT-csomagból Base64-kódolásban. |
authenticationMethod |
Opcionális | Hitelesítési módszer az MQTT CONNECT-csomagból (csak MQTT5). |
authenticationData |
Opcionális | Hitelesítési adatok az MQTT CONNECT-csomagból Base64-kódolásban (csak MQTT5 esetén). |
clientCertificate |
Opcionális | Ügyféltanúsítvány Privacy-Enhanced e-mail (PEM) formátumban. |
clientCertificateChain |
Opcionális | Az ügyfél által biztosított egyéb tanúsítványok szükségesek ahhoz, hogy létrehozzák a láncot az ügyféltanúsítvány és a Hitelesítésszolgáltató tanúsítványa között. |
Választerhelés
Sikeres válasz
HTTP/1.1 200 OK
Content-Type: application/json
{
"decision": "allow",
"clientAuthenticationName": "<string>",
"attributes": {
"attr": "<int/string/array_of_strings>",
...
},
"expiration": "<unix time format>"
}
Elutasított válasz
HTTP/1.1 200 OK
Content-Type: application/json
{
"decision": "deny",
"errorReason": "<string>"
}
Hibakódok:
| Hitelesítési eredmény | Függvény eredménye | Event Grid MQTT indokkódja |
|---|---|---|
| Kifejezett engedélyezési megtagadás | "decision": "deny" |
Nem engedélyezett |
| Érvénytelen /lejárt jogkivonat | "decision": "deny" |
Nem engedélyezett |
| Függvényidőkorlát | N/A | A kiszolgáló nem érhető el |
| Függvénykivétel/összeomlás | N/A | A kiszolgáló nem érhető el |
| Átmeneti platformhiba | N/A | A kiszolgáló nem érhető el |
| Belső közvetítő feldolgozási hibája | N/A | A kiszolgáló nem érhető el |
Válaszmező leírása
| szakterület | Típus | Kötelező, ha | Leírás |
|---|---|---|---|
decision |
karakterlánc (allow | deny) |
Mindig kötelező | A szolgáltatás által visszaadott hitelesítési döntés. Az engedélyezett értékek a következők: allow vagy deny. |
clientAuthenticationName |
karakterlánc | Kötelező, ha decision = allow |
Az ügyfél identitásneve (például eszközazonosító vagy ügyfélazonosító). |
attributes |
objektum (szótár) | Nem kötelező, ha decision = allow |
További attribútumokat képviselő kulcs-érték párok. Az értékek lehetnek egész szám, sztring vagy sztringek tömbje. |
expiration |
egész szám (Unix időbélyeg, másodperc) | Nem kötelező, ha decision = allow |
Az engedélyezési határozat lejárati ideje Unix időként kifejezve (a korszak óta eltelt másodpercek). Példa: 1713782400. |
errorReason |
karakterlánc | Nem kötelező, ha decision = deny |
A kérés elutasításának okát leíró hibaüzenet. Ez az érték diagnosztikához van naplózva. |
Példák támogatott attribútumtípusokra
"num_attr_pos": 1,
"num_attr_neg": -1,
"str_attr": "str_value",
"str_list_attr": [
"str_value_1",
"str_value_2"
]
A rendszer minden helyes adattípust (a megfelelő <int32/string/array_of_strings>számot) attribútumként használ. A példában a num_attr_pos, num_attr_neg, str_attrés str_list_attr a jogcímek helyes adattípusokkal rendelkeznek, és attribútumként használatosak.