MQTT-klientautentisering med certifikat
Azure Event Grids MQTT-asynkronisering stöder autentisering av klienter med X.509-certifikat. X.509-certifikatet innehåller autentiseringsuppgifterna för att associera en viss klient med klientorganisationen. I den här modellen sker autentisering vanligtvis en gång under sessionsetableringen. Sedan antas alla framtida åtgärder som använder samma session komma från den identiteten.
Autentiseringslägen som stöds är:
- Certifikat som utfärdats av en certifikatutfärdare (CA)
- Självsignerat klientcertifikat – tumavtryck
- Microsoft Entra ID-token
Den här artikeln fokuserar på certifikat. Mer information om autentisering med hjälp av Microsoft Entra-ID-token finns i autentisera klienten med hjälp av Microsoft Entra ID-token.
Certifikatutfärdare (CA) signerade certifikat
I den här metoden registreras ett rotcertifikat eller ett mellanliggande X.509-certifikat med tjänsten. Rotcertifikatet eller mellanhandscertifikatet som används för att signera klientcertifikatet måste registreras med tjänsten först.
Viktigt!
- Se till att ladda upp det rotcertifikat eller mellanliggande certifikat som används för att signera klientcertifikatet. Det behövs inte för att ladda upp hela certifikatkedjan.
- Om du till exempel har en kedja med rotcertifikat, mellanliggande certifikat och lövcertifikat ska du se till att ladda upp det mellanliggande certifikatet som signerade löv-/klientcertifikaten.
När du registrerar klienter måste du identifiera certifikatfältet som används för att lagra klientens autentiseringsnamn. Tjänsten matchar autentiseringsnamnet från certifikatet med klientens autentiseringsnamn i klientmetadata för att verifiera klienten. Tjänsten validerar även klientcertifikatet genom att verifiera om det är signerat av det tidigare registrerade rotcertifikatet eller mellanhandscertifikatet.
Självsignerat klientcertifikat – tumavtryck
I den här autentiseringsmetoden lagrar klientregistret det exakta tumavtrycket för det certifikat som klienten ska använda för att autentisera. När klienten försöker ansluta till tjänsten validerar tjänsten klienten genom att jämföra tumavtrycket som visas i klientcertifikatet med tumavtrycket som lagras i klientmetadata.
Kommentar
- Vi rekommenderar att du inkluderar klientautentiseringsnamnet i användarnamnsfältet i klientens anslutningspaket. Med det här autentiseringsnamnet tillsammans med klientcertifikatet kan tjänsten autentisera klienten.
- Om du inte anger autentiseringsnamnet i fältet användarnamn måste du konfigurera de alternativa källfälten för klientautentiseringsnamnet i namnområdets omfång. Tjänsten söker efter klientautentiseringsnamnet i motsvarande fält i klientcertifikatet för att autentisera klientanslutningen.
På konfigurationssidan i namnområdesomfånget kan du aktivera alternativa klientautentiseringsnamnkällor och sedan välja de klientcertifikatfält som har namnet på klientautentiseringen.
Det är viktigt att välja ordning på klientcertifikatfälten på namnområdeskonfigurationssidan. Tjänsten söker efter klientautentiseringsnamnet i klientcertifikatfälten i samma ordning.
Om du till exempel väljer alternativet Certifikat-DNS först och sedan alternativet Ämnesnamn – när du autentiserar klientanslutningen,
- tjänsten kontrollerar dns-fältet för det alternativa namnet på klientcertifikatet först för klientens autentiseringsnamn
- om DNS-fältet är tomt kontrollerar tjänsten fältet Ämnesnamn i klientcertifikatet
- Om klientautentiseringsnamnet inte finns i något av dessa två fält nekas klientanslutningen
I båda lägena för klientautentisering förväntar vi oss att klientautentiseringsnamnet anges antingen i användarnamnsfältet i anslutningspaketet eller i något av klientcertifikatfälten.
Klientcertifikatfält som stöds för alternativ källa för klientautentiseringsnamn
Du kan använda något av följande fält för att ange klientautentiseringsnamn i klientcertifikatet.
Källalternativ för autentiseringsnamn | Certifikatfält | beskrivning |
---|---|---|
Certifikatmottagarenamn | tls_client_auth_subject_dn | Certifikatets unika namn för certifikatet. |
Certifikat-DNS | tls_client_auth_san_dns | SAN-posten dNSName i certifikatet. |
Certifikat-URI | tls_client_auth_san_uri | SAN-posten uniformResourceIdentifier i certifikatet. |
Certifikat-IP | tls_client_auth_san_ip | IPv4- eller IPv6-adressen som finns i iPAddress SAN-posten i certifikatet. |
E-post för certifikat | tls_client_auth_san_email | SAN-posten rfc822Name i certifikatet. |