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 Azure AD memberikan keamanan unggul dan kemudahan penggunaan atas autentikasi tanda tangan akses bersama (SAS) dan berbasis kunci. Dengan Microsoft Azure AD, tidak perlu menyimpan rahasia yang digunakan untuk autentikasi dalam kode Anda dan merisikokan potensi kerentanan keamanan. Kami sangat menyarankan Anda menggunakan Microsoft Azure AD dengan aplikasi penerbitan acara Azure Event Grid Anda. Untuk informasi selengkapnya, lihat Mengautentikasi klien penerbitan menggunakan Azure Active Directory.
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 alur untuk topik event grid tempat Anda mengirim acara. 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.