Erişim anahtarları veya paylaşılan erişim imzaları kullanarak istemci Azure Event Grid yayımlama

Bu makalede, erişim anahtarı veya paylaşılan ERIŞIM imzası (SAS) belirteci kullanarak Azure Event Grid konular, etki alanları, iş ortağı ad alanları için olayları yayınlayan istemcilerin kimliğini doğrulama hakkında bilgi sağlanır.

Önemli

Azure AD 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ı üzerinde üstün güvenlik ve kullanım kolaylığı sağlar. Azure AD ile kodunuzda kimlik doğrulama için kullanılan gizli dizileri depolamaya ve olası güvenlik açıklarına karşı risk altına almanız gerekmez. Azure AD 'yi Azure Event Grid olay yayımlama uygulamalarınızla kullanmanızı kesinlikle öneririz. Daha fazla bilgi için bkz. Azure Active Directory kullanarak yayımlama Istemcilerinin kimliğini doğrulama.

Erişim anahtarı kullanarak kimlik doğrulama

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

HTTP üstbilgisindeki erişim anahtarı

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

aeg-sas-key: XXXXXXXXXXXXXXXXXX0GXXX/nDT4hgdEj9DpBeRr38arnnm5OFg==

Sorgu parametresi olarak erişim anahtarı

Ayrıca, aeg-sas-key bir sorgu parametresi olarak belirtebilirsiniz.

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

Bir konu veya etki alanı için erişim anahtarları alma hakkında yönergeler için bkz. erişim anahtarlarını alma.

SAS kullanarak kimlik doğrulama

Bir Event Grid kaynağı için SAS belirteçleri, kaynak, sona erme saati ve bir imzayı içerir. SAS belirtecinin biçimi: r={resource}&e={expiration}&s={signature} .

Kaynak, olayları gönderdiğiniz olay Kılavuzu 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 aeg-sas-token Authorization SharedAccessSignature Event Grid kimlik doğrulaması için üstbilgiyi veya üstbilgiyi kullanın.

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

Aşağıdaki örnek, Event Grid ile kullanmak için 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-belirteç üstbilgisini kullanma

Üst bilgi için SAS belirtecini bir değer olarak geçirme örneği aşağıda verilmiştir 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

Üst bilgi için SAS belirtecini bir değer olarak geçirme örneği aşağıda verilmiştir 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ı iletmek için olay işleyicileriyle kimlik doğrulama hakkında bilgi edinmek için bkz. olay teslimi kimlik doğrulaması .