Erişim anahtarlarını veya paylaşılan erişim imzalarını kullanarak Azure Event Grid yayımlama istemcilerinin kimliğini doğrulama

Bu makalede, erişim anahtarı veya Paylaşılan Erişim İmzası (SAS) belirtecini kullanarak Azure Event Grid konularına, etki alanlarına, iş ortağı ad alanlarına olay yayımlayan istemcilerin kimliğini doğrulama hakkında bilgi sağlanır.

Önemli

  • Microsoft Entra kimliklerini kullanarak kullanıcıların veya uygulamaların kimliğini doğrulamak ve yetkilendirmek, anahtar tabanlı ve paylaşılan erişim imzaları (SAS) kimlik doğrulamasına göre üstün güvenlik ve kullanım kolaylığı sağlar. Microsoft Entra Id ile, kodunuzda kimlik doğrulaması için kullanılan gizli dizileri depolamaya ve olası güvenlik açıklarını riske atmaya gerek yoktur. Azure Event Grid olay yayımlama uygulamalarınızla Microsoft Entra ID kullanmanızı kesinlikle öneririz. Daha fazla bilgi için bkz . Microsoft Entra Id kullanarak yayımlama istemcilerinin kimliğini doğrulama.
  • Ad alanı konuları için Microsoft Entra kimlik doğrulaması desteklenmez.

Erişim anahtarını kullanarak kimlik doğrulaması

Erişim anahtarı kimlik doğrulaması, kimlik doğrulamasının en basit biçimidir. Erişim anahtarını HTTP üst bilgisi veya URL sorgu parametresi olarak geçirebilirsiniz.

HTTP üst bilgisinde Erişim anahtarı

Erişim anahtarını HTTP üst bilgisi için bir değer olarak geçirin: aeg-sas-key.

aeg-sas-key: XXXXXXXXXXXXXXXXXX0GXXX/nDT4hgdEj9DpBeRr38arnnm5OFg==

Sorgu parametresi olarak erişim anahtarı

Sorgu parametresi olarak da belirtebilirsiniz aeg-sas-key .

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

Bir konu veya etki alanı için erişim anahtarlarını alma yönergeleri için bkz . Erişim anahtarlarını alma.

SAS kullanarak kimlik doğrulaması

Event Grid kaynağı için SAS belirteçleri kaynağı, süre sonunu ve imzayı içerir. SAS belirtecinin biçimi: r={resource}&e={expiration}&s={signature}.

Kaynak, olayları gönderdiğiniz Event Grid konusunun yoludur. Örneğin, geçerli bir kaynak yolu: https://<yourtopic>.<region>.eventgrid.azure.net/api/events. Desteklenen tüm API sürümlerini görmek için bkz . Microsoft.EventGrid kaynak türleri.

İlk olarak program aracılığıyla bir SAS belirteci oluşturun ve ardından Event Grid ile kimlik doğrulaması yapmak için üst bilgi veya Authorization SharedAccessSignature üst bilgiyi kullanınaeg-sas-token.

Program aracılığıyla SAS belirteci oluşturma

Aşağıdaki örnek, Event Grid ile kullanmak üzere bir SAS belirteci oluşturur:

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 üst bilgisini kullanma

Sas belirtecini üst bilgi için değer olarak geçirme örneği aşağıda verilmiştır 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

Yetkilendirme üst bilgisini kullanma

Sas belirtecini üst bilgi için değer olarak geçirme örneği aşağıda verilmiştır 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

Sonraki adımlar

Olayları teslim etmek için olay işleyicileriyle kimlik doğrulaması hakkında bilgi edinmek için bkz. Olay teslimi kimlik doğrulaması.