Mengautentikasi klien penerbitan Azure Event Grid menggunakan kunci akses atau tanda tangan akses bersama
Artikel ini menyediakan informasi tentang mengautentikasi klien yang menerbitkan peristiwa ke topik atau domain Azure Event Grid, namespace layanan mitra menggunakan kunci akses atau token Tanda Tangan Akses Bersama (SAS).
Penting
- Mengautentikasi dan mengotorisasi pengguna atau aplikasi menggunakan identitas Microsoft Entra memberikan keamanan yang unggul dan kemudahan penggunaan melalui autentikasi tanda tangan akses berbasis kunci dan bersama (SAS). Dengan ID Microsoft Entra, Anda tidak perlu menyimpan rahasia yang digunakan untuk autentikasi dalam kode Anda dan berisiko potensi kerentanan keamanan. Kami sangat menyarankan Anda menggunakan ID Microsoft Entra dengan aplikasi penerbitan peristiwa Azure Event Grid Anda. Untuk informasi selengkapnya, lihat Mengautentikasi klien penerbitan menggunakan ID Microsoft Entra.
- Autentikasi Microsoft Entra tidak didukung untuk topik namespace.
Mengautentikasi menggunakan kunci akses
Autentikasi kunci akses adalah bentuk autentikasi yang paling sederhana. Anda dapat meneruskan kunci akses sebagai header HTTP atau parameter kueri URL.
Kunci akses di header HTTP
Lulus kunci akses sebagai nilai untuk header HTTP: aeg-sas-key
.
aeg-sas-key: XXXXXXXXXXXXXXXXXX0GXXX/nDT4hgdEj9DpBeRr38arnnm5OFg==
Tombol Access sebagai parameter kueri
Anda juga dapat menentukan aeg-sas-key
sebagai parameter kueri.
https://<yourtopic>.<region>.eventgrid.azure.net/api/events?aeg-sas-key=XXXXXXXX53249XX8XXXXX0GXXX/nDT4hgdEj9DpBeRr38arnnm5OFg==
Untuk instruksi tentang cara mendapatkan kunci akses untuk topik atau domain, lihat Mendapatkan kunci akses.
Mengautentikasi menggunakan SAS
Token SAS untuk sumber daya Azure Event Grid mencakup sumber daya, waktu kedaluwarsa, dan tanda tangan. Format token SAS adalah: r={resource}&e={expiration}&s={signature}
.
Sumber daya adalah jalur untuk topik Event Grid tempat Anda mengirim peristiwa. Misalnya, alur sumber daya yang valid adalah: https://<yourtopic>.<region>.eventgrid.azure.net/api/events
. Untuk melihat semua versi API yang didukung, lihat jenis sumber daya Microsoft.EventGrid.
Pertama, hasilkan token SAS secara terprogram dan kemudian gunakan aeg-sas-token
header atau header untuk Authorization SharedAccessSignature
mengautentikasi dengan Event Grid.
Hasilkan token SAS secara terprogram
Contoh berikut membuat token SAS untuk digunakan dengan 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
Menggunakan header aeg-sas-token
Berikut adalah contoh melewati token SAS sebagai nilai untuk aeg-sas-token
header.
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
Menggunakan header Otorisasi
Berikut adalah contoh melewati token SAS sebagai nilai untuk Authorization
header.
Authorization: SharedAccessSignature r=https%3a%2f%2fmytopic.eventgrid.azure.net%2fapi%2fevents&e=6%2f15%2f2017+6%3a20%3a15+PM&s=XXXXXXXXXXXXX%2fBPjdDLOrc6THPy3tDcGHw1zP4OajQ%3d
Langkah berikutnya
Lihat Autentikasi pengiriman acara untuk mempelajari tentang autentikasi dengan penangan peristiwa untuk menyampaikan acara.