Az Azure Event Grid közzétételi ügyfeleinek hitelesítése hozzáférési kulcsokkal vagy közös hozzáférésű jogosultságkódokkal

Ez a cikk információkat nyújt az eseményeket az Azure Event Grid-témakörökben, tartományokban, partnernévterekben a hozzáférési kulcs vagy a közös hozzáférésű jogosultságkód (SAS) jogkivonat használatával közzétevő ügyfelek hitelesítéséről.

Fontos

  • A felhasználók vagy alkalmazások Microsoft Entra-identitások használatával történő hitelesítése és engedélyezése kiváló biztonságot és egyszerű használatot biztosít a kulcsalapú és közös hozzáférésű jogosultságkódok (SAS) hitelesítésével szemben. A Microsoft Entra-azonosítóval nincs szükség a kódban való hitelesítéshez használt titkos kulcsok tárolására, és nem kockáztathatja a biztonsági réseket. Határozottan javasoljuk, hogy használja a Microsoft Entra ID-t az Azure Event Grid esemény-közzétételi alkalmazásaival. További információ: Közzétételi ügyfelek hitelesítése a Microsoft Entra-azonosítóval.
  • A Microsoft Entra-hitelesítés a névtérrel kapcsolatos témakörökben nem támogatott.

Hitelesítés hozzáférési kulccsal

A hozzáférési kulcs hitelesítése a hitelesítés legegyszerűbb formája. A hozzáférési kulcsot HTTP-fejlécként vagy URL-lekérdezési paraméterként is átadhatja.

Hozzáférési kulcs EGY HTTP-fejlécben

Adja át a hozzáférési kulcsot a HTTP-fejléc értékeként: aeg-sas-key.

aeg-sas-key: XXXXXXXXXXXXXXXXXX0GXXX/nDT4hgdEj9DpBeRr38arnnm5OFg==

Hozzáférési kulcs lekérdezési paraméterként

Lekérdezési paraméterként is megadható aeg-sas-key .

https://<yourtopic>.<region>.eventgrid.azure.net/api/events?aeg-sas-key=XXXXXXXX53249XX8XXXXX0GXXX/nDT4hgdEj9DpBeRr38arnnm5OFg==

A témakörhöz vagy tartományhoz tartozó hozzáférési kulcsok lekéréséről a Hozzáférési kulcsok lekérése című témakörben talál útmutatást.

Hitelesítés SAS használatával

Az Event Grid-erőforrások SAS-jogkivonatai közé tartozik az erőforrás, a lejárati idő és az aláírás. Az SAS-jogkivonat formátuma: r={resource}&e={expiration}&s={signature}.

Az erőforrás annak az Event Grid-témakörnek az elérési útja, amelyre eseményeket küld. Egy érvényes erőforrás-elérési út például a következő: https://<yourtopic>.<region>.eventgrid.azure.net/api/events. A támogatott API-verziók megtekintéséhez tekintse meg a Microsoft.EventGrid erőforrástípusokat.

Először programozott módon hozzon létre egy SAS-jogkivonatot, majd használja a fejlécet vagy Authorization SharedAccessSignature a aeg-sas-token fejlécet az Event Grid-hitelesítéshez.

SAS-jogkivonat létrehozása programozott módon

Az alábbi példa létrehoz egy SAS-jogkivonatot az Event Gridhez való használatra:

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

Aeg-sas-token fejléc használata

Íme egy példa az SAS-jogkivonat fejlécértékként való átadására aeg-sas-token .

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

Engedélyezés fejlécének használata

Íme egy példa az SAS-jogkivonat fejlécértékként való átadására Authorization .

Authorization: SharedAccessSignature r=https%3a%2f%2fmytopic.eventgrid.azure.net%2fapi%2fevents&e=6%2f15%2f2017+6%3a20%3a15+PM&s=XXXXXXXXXXXXX%2fBPjdDLOrc6THPy3tDcGHw1zP4OajQ%3d

További lépések

Az eseménykézbesítési hitelesítéssel kapcsolatos információkért tekintse meg az eseménykezelőkkel való hitelesítést az események kézbesítéséhez.