Autentisera Azure Event Grid-publiceringsklienter med hjälp av åtkomstnycklar eller signaturer för delad åtkomst
Den här artikeln innehåller information om autentisering av klienter som publicerar händelser till Azure Event Grid-ämnen, domäner, partnernamnområden med hjälp av åtkomstnyckel eller SAS-token (Signatur för delad åtkomst).
Viktigt!
- Att autentisera och auktorisera användare eller program med Hjälp av Microsoft Entra-identiteter ger överlägsen säkerhet och användarvänlighet vid nyckelbaserad och delad åtkomstsignaturautentisering (SAS). Med Microsoft Entra-ID behöver du inte lagra hemligheter som används för autentisering i din kod och riskera potentiella säkerhetsrisker. Vi rekommenderar starkt att du använder Microsoft Entra-ID med dina Azure Event Grid-program för händelsepublicering. Mer information finns i Autentisera publiceringsklienter med Microsoft Entra-ID.
- Microsoft Entra-autentisering stöds inte för namnområdesämnen.
Autentisera med hjälp av åtkomstnyckel
Åtkomstnyckelautentisering är den enklaste formen av autentisering. Du kan skicka åtkomstnyckeln som ett HTTP-huvud eller en URL-frågeparameter.
Åtkomstnyckel i ett HTTP-huvud
Skicka åtkomstnyckeln som ett värde för HTTP-huvudet: aeg-sas-key
.
aeg-sas-key: XXXXXXXXXXXXXXXXXX0GXXX/nDT4hgdEj9DpBeRr38arnnm5OFg==
Åtkomstnyckel som en frågeparameter
Du kan också ange aeg-sas-key
som en frågeparameter.
https://<yourtopic>.<region>.eventgrid.azure.net/api/events?aeg-sas-key=XXXXXXXX53249XX8XXXXX0GXXX/nDT4hgdEj9DpBeRr38arnnm5OFg==
Anvisningar om hur du hämtar åtkomstnycklar för ett ämne eller en domän finns i Hämta åtkomstnycklar.
Autentisera med SAS
SAS-token för en Event Grid-resurs inkluderar resursen, förfallotiden och en signatur. Formatet för SAS-token är: r={resource}&e={expiration}&s={signature}
.
Resursen är sökvägen till event grid-ämnet som du skickar händelser till. En giltig resurssökväg är till exempel: https://<yourtopic>.<region>.eventgrid.azure.net/api/events
. Information om alla API-versioner som stöds finns i Resurstyper för Microsoft.EventGrid.
Generera först programmatiskt en SAS-token och använd sedan huvudet eller Authorization SharedAccessSignature
huvudet för att autentisera aeg-sas-token
med Event Grid.
Generera SAS-token programmatiskt
I följande exempel skapas en SAS-token för användning med Event Grid:
static string BuildSharedAccessSignature(string resource, DateTime expirationUtc, string key)
{
const char Resource = 'r';
const char Expiration = 'e';
const char Signature = 's';
string encodedResource = HttpUtility.UrlEncode(resource);
var culture = CultureInfo.CreateSpecificCulture("en-US");
var encodedExpirationUtc = HttpUtility.UrlEncode(expirationUtc.ToString(culture));
string unsignedSas = $"{Resource}={encodedResource}&{Expiration}={encodedExpirationUtc}";
using (var hmac = new HMACSHA256(Convert.FromBase64String(key)))
{
string signature = Convert.ToBase64String(hmac.ComputeHash(Encoding.UTF8.GetBytes(unsignedSas)));
string encodedSignature = HttpUtility.UrlEncode(signature);
string signedSas = $"{unsignedSas}&{Signature}={encodedSignature}";
return signedSas;
}
}
def generate_sas_token(uri, key, expiry=3600):
ttl = datetime.datetime.utcnow() + datetime.timedelta(seconds=expiry)
encoded_resource = urllib.parse.quote_plus(uri)
encoded_expiration_utc = urllib.parse.quote_plus(ttl.isoformat())
unsigned_sas = f'r={encoded_resource}&e={encoded_expiration_utc}'
signature = b64encode(HMAC(b64decode(key), unsigned_sas.encode('utf-8'), sha256).digest())
encoded_signature = urllib.parse.quote_plus(signature)
token = f'r={encoded_resource}&e={encoded_expiration_utc}&s={encoded_signature}'
return token
Använda aeg-sas-token-header
Här är ett exempel på hur du skickar SAS-token som ett värde för aeg-sas-token
huvudet.
aeg-sas-token: r=https%3a%2f%2fmytopic.eventgrid.azure.net%2fapi%2fevents&e=6%2f15%2f2017+6%3a20%3a15+PM&s=XXXXXXXXXXXXX%2fBPjdDLOrc6THPy3tDcGHw1zP4OajQ%3d
Använda auktoriseringshuvud
Här är ett exempel på hur du skickar SAS-token som ett värde för Authorization
huvudet.
Authorization: SharedAccessSignature r=https%3a%2f%2fmytopic.eventgrid.azure.net%2fapi%2fevents&e=6%2f15%2f2017+6%3a20%3a15+PM&s=XXXXXXXXXXXXX%2fBPjdDLOrc6THPy3tDcGHw1zP4OajQ%3d
Nästa steg
Se Händelseleveransautentisering för att lära dig mer om autentisering med händelsehanterare för att leverera händelser.