Uwierzytelnianie klientów Azure Event Grid publikowania przy użyciu kluczy dostępu lub sygnatur dostępu współdzielonego
Ten artykuł zawiera informacje na temat uwierzytelniania klientów, którzy publikują zdarzenia w Azure Event Grid tematach, domenach, przestrzeniach nazw partnerów przy użyciu klucza dostępu lub tokenu sygnatury dostępu współdzielonego (SAS).
Ważne
- Uwierzytelnianie i autoryzowanie użytkowników lub aplikacji przy użyciu tożsamości Azure AD zapewnia doskonałe zabezpieczenia i łatwość korzystania z uwierzytelniania opartego na kluczach i sygnaturach dostępu współdzielonego (SAS). W przypadku Azure AD nie ma potrzeby przechowywania wpisów tajnych używanych do uwierzytelniania w kodzie i ryzyka potencjalnych luk w zabezpieczeniach. Zdecydowanie zalecamy używanie Azure AD z aplikacjami do publikowania zdarzeń Azure Event Grid. Aby uzyskać więcej informacji, zobacz Uwierzytelnianie klientów publikowania przy użyciu usługi Azure Active Directory.
- Azure AD uwierzytelnianie nie jest obsługiwane w przypadku tematów przestrzeni nazw.
Uwierzytelnianie przy użyciu klucza dostępu
Uwierzytelnianie za pomocą klucza dostępu jest najprostszą formą uwierzytelniania. Klucz dostępu można przekazać jako nagłówek HTTP lub parametr zapytania adresu URL.
Klucz dostępu w nagłówku HTTP
Przekaż klucz dostępu jako wartość nagłówka HTTP: aeg-sas-key
.
aeg-sas-key: XXXXXXXXXXXXXXXXXX0GXXX/nDT4hgdEj9DpBeRr38arnnm5OFg==
Klucz dostępu jako parametr zapytania
Można również określić aeg-sas-key
jako parametr zapytania.
https://<yourtopic>.<region>.eventgrid.azure.net/api/events?aeg-sas-key=XXXXXXXX53249XX8XXXXX0GXXX/nDT4hgdEj9DpBeRr38arnnm5OFg==
Aby uzyskać instrukcje dotyczące uzyskiwania kluczy dostępu dla tematu lub domeny, zobacz Uzyskiwanie kluczy dostępu.
Uwierzytelnianie przy użyciu sygnatury dostępu współdzielonego
Tokeny sygnatury dostępu współdzielonego dla zasobu usługi Event Grid obejmują zasób, czas wygaśnięcia i podpis. Format tokenu SAS to: r={resource}&e={expiration}&s={signature}
.
Zasób jest ścieżką tematu usługi Event Grid, do którego są wysyłane zdarzenia. Na przykład prawidłową ścieżką zasobu jest: https://<yourtopic>.<region>.eventgrid.azure.net/api/events
. Aby wyświetlić wszystkie obsługiwane wersje interfejsu API, zobacz Typy zasobów Microsoft.EventGrid.
Najpierw programowo wygeneruj token SAS, a następnie użyj nagłówka lub Authorization SharedAccessSignature
nagłówka aeg-sas-token
do uwierzytelniania w usłudze Event Grid.
Programowe generowanie tokenu SAS
Poniższy przykład tworzy token SYGNATURy dostępu współdzielonego do użycia z usługą 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
Używanie nagłówka aeg-sas-token
Oto przykład przekazywania tokenu SAS jako wartości nagłówka 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
Używanie nagłówka autoryzacji
Oto przykład przekazywania tokenu SAS jako wartości nagłówka 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
Następne kroki
Zobacz Uwierzytelnianie dostarczania zdarzeń , aby dowiedzieć się więcej o uwierzytelnianiu za pomocą procedur obsługi zdarzeń w celu dostarczania zdarzeń.