Autentisera med namnområden med JSON-webbtoken
Den här artikeln visar hur du autentiserar med Azure Event Grid-namnområdet med hjälp av JSON-webbtoken.
Azure Event Grids MQTT-koordinator stöder anpassad JWT-autentisering, vilket gör det möjligt för klienter att ansluta och autentisera med ett Event Grid-namnområde med hjälp av JSON-webbtoken som utfärdas av alla identitetsprovider, förutom Microsoft Entra-ID.
Förutsättningar
Om du vill använda anpassad JWT-autentisering för namnområden måste du ha följande förutsättningar:
- Identitetsprovider som kan utfärda Json-webbtoken.
- CA-certifikat som innehåller dina offentliga nycklar som används för att verifiera klienttoken.
- Azure Key Vault-konto som värd för certifikatutfärdarcertifikatet som innehåller dina offentliga nycklar.
Steg på hög nivå
Följ dessa steg om du vill använda anpassad JWT-autentisering för namnområden:
- Skapa ett namnområde och konfigurera dess underresurser.
- Aktivera hanterad identitet i Event Grid-namnområdet.
- Skapa ett Azure Key Vault-konto som är värd för certifikatutfärdarcertifikatet som innehåller dina offentliga nycklar.
- Lägg till rolltilldelning i Azure Key Vault för namnområdets hanterade identitet.
- Konfigurera anpassade autentiseringsinställningar på Event Grid-namnområdet
- Dina klienter kan ansluta till Event Grid-namnområdet med hjälp av de token som tillhandahålls av identitetsprovidern.
Skapa ett namnområde och konfigurera dess underresurser
Följ anvisningarna i snabbstarten: Publicera och prenumerera på MQTT-meddelanden i Event Grid-namnområdet med Azure Portal för att skapa ett namnområde och konfigurera dess underresurser. Hoppa över stegen för att skapa certifikat och klient eftersom klientidentiteterna kommer från den angivna token. Klientattribut baseras på anpassade anspråk i klienttoken. Klientattributen används i klientgruppsfrågan, ämnesmallvariabler och routning av berikningskonfiguration.
Aktivera hanterad identitet i Event Grid-namnområdet
Namnområdet använder den hanterade identiteten för att komma åt din Azure Key Vault-instans för att hämta servercertifikatet för din anpassade domän. Använd följande kommando för att aktivera systemtilldelad hanterad identitet i Event Grid-namnområdet:
az eventgrid namespace update --resource-group <resource group name> --name <namespace name> --identity "{type:systemassigned}"
Information om hur du konfigurerar system- och användartilldelade identiteter med hjälp av Azure Portal finns i Aktivera hanterad identitet för ett Event Grid-namnområde.
Skapa ett Azure Key Vault-konto och ladda upp servercertifikatet
Använd följande kommando för att skapa ett Azure Key Vault-konto:
az keyvault create --name "<your-unique-keyvault-name>" --resource-group "<resource group name>" --location "centraluseaup"
Använd följande kommando för att importera ett certifikat till Azure Key Vault
az keyvault certificate import --vault-name "<your-key-vault-name>" -n "<cert name>" -f "<path to your certificate pem file> "
Kommentar
Certifikatet måste innehålla domännamnet i alternativt namn på certifikatmottagaren för DNS. Mer information finns i Självstudie: Importera ett certifikat i Azure Key Vault.
Lägga till rolltilldelning i Azure Key Vault för namnområdets hanterade identitet
Du måste ge åtkomst till namnområdet för att få åtkomst till ditt Azure Key Vault-konto med hjälp av följande steg:
Hämta Event Grid-namnområdessystemets hanterade identitetshuvudnamns-ID med hjälp av följande kommando
$principalId=(az eventgrid namespace show --resource-group <resource group name> --name <namespace name> --query identity.principalId -o tsv)
Hämta ditt Resurs-ID för Azure Key Vault.
$keyVaultResourceId=(az keyvault show --resource-group <resource group name> --name <your key vault name> --query id -o tsv)
Lägg till rolltilldelning i Key Vault för namnområdets hanterade identitet.
az role assignment create --role "Key Vault Certificate User" --assignee $principalId --scope $keyVaultResourceId
Mer information om Åtkomst till Key Vault och portalen finns i Ge åtkomst till Key Vault-nycklar, certifikat och hemligheter med en rollbaserad åtkomstkontroll i Azure.
Konfigurera anpassade autentiseringsinställningar på Event Grid-namnområdet
I det här steget konfigurerar du anpassade autentiseringsinställningar på Event Grid-namnområdet med hjälp av Azure Portal och Azure CLI. Du måste först skapa namnområdet och sedan uppdatera det med hjälp av följande steg.
Använda Azure-portalen
På sidan Event Grid-namnområde väljer du Konfiguration på den vänstra menyn.
I avsnittet Anpassad JWT-autentisering anger du värden för följande egenskaper:
Välj Aktivera anpassad JWT-autentisering.
Token issuer: Ange värdet för utfärdaranspråken för JWT-token som presenteras av MQTT-klienterna.
Välj Lägg till utfärdarcertifikat
På den nya sidan anger du värden för följande egenskaper.
Certifikat-URL: Certifikatidentifieraren för utfärdarcertifikatet i Azure Key Vault som du skapade. Du kan välja Välj ett certifikat med hjälp av ett nyckelvalv i stället för att välja certifikatet och nyckelvalvet från dina prenumerationer.
Identitet: den identitet som används för att autentisera med Key Vault för att få åtkomst till utfärdarcertifikatet som skapades.
Markera Lägga till.
På sidan Konfiguration väljer du Använd.
Kommentar
Du kan lägga till upp till två
iss
certifikat för certifikat-/nyckelrotation.
Använda Azure CLI
Använd följande kommando för att uppdatera namnområdet med den anpassade JWT-autentiseringskonfigurationen.
az resource update --resource-type Microsoft.EventGrid/namespaces --api-version 2024-06-01-preview --ids /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/dummy-cd-test/providers/Microsoft.EventGrid/namespaces/dummy-cd-test2 --set properties.topicSpacesConfiguration.clientAuthentication='{\"customJwtAuthentication\":{\"tokenIssuer\":\"dmpypin-issuer\",\"issuerCertificates\":[{\"certificateUrl\":\"https://dummyCert-cd-test.vault.azure.net/certificates/dummy-cd-test/4f844b284afd487e9bba0831191087br1\",\"identity\":{\"type\":\"SystemAssigned\"}}]}}'
JSON-webbtokenformat
Json-webbtoken delas in i avsnitten JWT-rubrik och JWT-nyttolast.
JWT-rubrik
Huvudet måste innehålla minst typ
och alg
fält. typ
måste alltid vara JWS
och alg
måste alltid vara RS256
. Tokenrubriken måste vara följande:
{
"typ": "JWT",
"alg": "RS256"
}
JWT-nyttolast
Event Grid kräver följande anspråk: iss
, sub
, aud
, exp
, . nbf
Name | beskrivning |
---|---|
iss |
Utfärdare. Värdet i JWT måste matcha utfärdaren i Event Grid-namnområdeskonfigurationen för anpassad JWT-autentisering. |
sub |
Ämne. Värdet används som autentiseringsidentitetsnamn. |
aud |
Publik. Värdet kan vara en sträng eller en matris med strängar. Värdet måste innehålla standardvärden för Event Grid-namnområdet och/eller anpassad domän för event grid-namnområdet (om det har konfigurerats). Målgruppen kan innehålla andra strängar, men vi kräver att minst en av dessa strängar är ett standard värdnamn för Event Grid-namnområdet eller en anpassad domän för det här namnområdet. |
exp |
Förfallodatum. Unix-tid när JWT upphör att gälla. |
nbf |
Inte tidigare. Enhetstid när JWT blir giltigt. |
Event Grid mappar alla anspråk till klientattribut om de har någon av följande typer: int32
, string
, array of strings
. Standardanspråk iss
, sub
, aud
, , nbf
exp
undantas från klientattribut. I följande JWT-exempel konverteras endast tre anspråk till klientattribut, num_attr
, , , str_list_attr
eftersom de har rätt typer int32
, string
, array of strings
str_attr
. incorrect_attr_1
, incorrect_attr_2
, incorrect_attr_3
konverteras inte till klientattribut eftersom de har fel typer: float
, array of integers
, object
.
{
"iss": "correct_issuer",
"sub": "d1",
"aud": "testns.mqtt-broker-int.azure.net",
"exp": 1712876224,
"nbf": 1712869024,
"num_attr": 1,
"str_attr": "some string",
"str_list_attr": [
"string 1",
"string 2"
],
"incorrect_attr_1": 1.23,
"incorrect_attr_2": [
1,
2,
3
],
"incorrect_attr_3": {
"field": "value"
}
}