Megosztás a következőn keresztül:


Azure Event Grid-ügyfelek hitelesítése hozzáférési kulcsokkal vagy közös hozzáférésű jogosultságkódokkal (előzetes verzió)

Ez a cikk információkat nyújt az ügyfelek Azure Event Namespace-témakörökbe, egyéni témakörökbe, tartományokba és partnernévterekbe való hitelesítéséről hozzáférési kulcs vagy közös hozzáférésű jogosultságkód (SAS) jogkivonat használatával.

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 alkalmazásaival.

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 .

Névtértémakörök esetén például a HTTP-kérelem URL-címe így nézhet ki egy kulcs paraméterként való átadásának.

https://<namespace_name>.<region>.eventgrid.azure.net/topics/<topic_name>:publish?aeg-sas-key=XXXXXXXX53249XX8XXXXX0GXXX/nDT4hgdEj9DpBeRr38arnnm5OFg==

Egyéni témakörök, tartományok és partnernévterek esetén a HTTP-kérelem URL-címének a következőképpen kell kinéznie:

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

Közös hozzáférésű jogosultságkódok

A közös hozzáférésű jogosultságkódok (SAS) hozzáférés-vezérlést biztosítanak azon erőforrások felett, amelyekkel az ügyfelek kommunikálhatnak. Az SAS-ben az alábbi vezérlők állíthatók be:

  • SAS-lejárati idő beállítása. Ez az érték hatékonyan határozza meg azt az időközt, amely alatt az SAS érvényes, használható a hitelesítéshez.
  • Az az erőforrás, amelyhez sas használható. AZ SAS-jogkivonat egyéni témakörök, tartományok, partnernévterek és névterek eléréséhez hozható létre. Ha sast hoz létre egy egyéni témakörhöz, tartományhoz vagy partnernévtérhez, az ügyfél felhasználhatja az események közzétételére bármelyik erőforrásban. Amikor létrehoz egy SAS-t a névtérerőforrásokhoz, részletesen szabályozhatja, hogy az ügyfél mit érhet el. Ha olyan SAS-t hoz létre, amelynek erőforrása névtér, az ügyfél a névtér bármely névtér-témakörében közzétehet eseményeket, és bármilyen esemény-előfizetésből fogadhat eseményeket a névtér témaköreinek bármelyikében. Hasonlóképpen, amikor létrehoz egy SAS-t egy névtértémakörhöz, az ügyfél közzétehet eseményeket a névtér témakörében, és eseményeket fogadhat a témakör bármely esemény-előfizetéséből. Amikor sast hoz létre egy esemény-előfizetéshez, az ügyfél az adott esemény-előfizetésen keresztül fogadhat eseményeket.
  • Csak az érvényes SAS-t tartalmazó ügyfelek küldhetnek vagy fogadhatnak adatokat az Event Gridnek.

Közös hozzáférésű jogosultságkód jogkivonata

Létrehozhat egy SAS-jogkivonatot, amely akkor vehető fel, amikor az ügyfélalkalmazás kommunikál az Event Griddel. Az Event Grid-erőforrások Base64 SAS-jogkivonatai a következő formátumú kódolt sztringek: r={resource}&e={expiration_utc}&s={signature}.

  • {resource} az az URL-cím, amely az ügyfél által elért Event Grid-erőforrást jelöli.
    • Az egyéni témakörök, tartományok és partnernévterek érvényes URL-formátuma a következő https://<yourtopic>.<region>.eventgrid.azure.net/api/events: .
    • A névtérerőforrások érvényes formátuma a következő:
      • Névterek: https://<namespace-name>.<region>.eventgrid.azure.net
      • Névtértémakörök: https://<namespace_name>.<region>.eventgrid.azure.net/topics/<topic_name>
      • Esemény-előfizetések: https://<namespace_name>.<region>.eventgrid.azure.net/topics/<topic_name>/eventsubscriptions/<event_subscription_name>
  • {expiration_utc} az SAS URL-címének utc-elévülési ideje.
  • {signature} az erőforrás URI-ja alapján kiszámított SHA-256 kivonat és a jogkivonat lejárati pillanatának sztring-ábrázolása, CRLF-szel elválasztva. A kivonatszámítás a következő pszeudokódhoz hasonlóan néz ki, és egy 256 bites/32 bájtos kivonatértéket ad vissza.
SHA-256('https://<namespace_name>.eventgrid.azure.net/'+'\n'+ 1438205742)

A jogkivonat tartalmazza a nem kivonatolt értékeket, hogy a címzett (Event Grid) ugyanazokat a paramétereket használva újrafordítsa a kivonatot, és ellenőrizze, hogy a jogkivonat nem lett-e módosítva (adatintegritás).

Az SAS-jogkivonat érvényes az aláírási sztringben használt erőforrás-URI-val előtaggal rendelkező összes erőforrásra.

Ha az Event Grid használatakor az összes támogatott API-verziót szeretné megtekinteni, tekintse meg a Microsoft.EventGrid erőforrástípusokat.

Hitelesítés SAS használatával

Az alkalmazás egy SAS-jogkivonat bemutatásával hitelesítheti magát egy Event Grid-erőforrás előtt. Ezt a fejléc vagy a aeg-sas-tokenAuthorization SharedAccessSignature fejléc HTTP-kéréssel történő használatával teheti meg. A következő szakaszok bemutatják, hogyan hozhat létre SAS-jogkivonatot, és hogyan használhatja azt, amikor az ügyfélalkalmazás HTTP-kéréseket küld vagy fogad (lekéréses kézbesítési) eseményeket.

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

Az alábbi C# és Python-példák bemutatják, hogyan hozhat létre SAS-jogkivonatot az Event Gridhez való használatra:

C# példa

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;
    }
}

Python-példa

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, amely bemutatja, hogyan adhat át SAS-jogkivonatot a aeg-sas-token fejléc értékeként.

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

Ez a példa bemutatja, hogyan adhat át SAS-jogkivonatot értékként a Authorization fejléchez.

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

Következő lépések