Autenticazione e autorizzazione del bus di servizioService Bus authentication and authorization

Le applicazioni accedono alle risorse del bus di servizio di Azure usando l'autenticazione con token per la firma di accesso condiviso.Applications gain access to Azure Service Bus resources using Shared Access Signature (SAS) token authentication. Con la firma di accesso condiviso, le applicazioni presentano un token al bus di servizio che è stato firmato con una chiave simmetrica nota sia all'emittente del token che al bus di servizio, ovvero "condivisa"; tale chiave è direttamente associata a una regola che concede diritti di accesso specifici, ad esempio l'autorizzazione alla ricezione/all'ascolto o all'invio di messaggi.With SAS, applications present a token to Service Bus that has been signed with a symmetric key known both to the token issuer and Service Bus (hence "shared") and that key is directly associated with a rule granting specific access rights, like the permission to receive/listen or send messages. Le regole relative alla firma di accesso condiviso sono configurate nello spazio dei nomi o direttamente nell'entità, ad esempio una coda o un argomento, consentendo il controllo di accesso granulare.SAS rules are either configured on the namespace, or directly on entities such as a queue or topic, allowing for fine grained access control.

I token della firma di accesso condiviso possono essere generati direttamente da un client del bus di servizio o da un token intermedio che emette endpoint con cui il client interagisce.SAS tokens can either be generated by a Service Bus client directly, or they can be generated by some intermediate token issuing endpoint with which the client interacts. Ad esempio, un sistema può richiedere al client di chiamare un endpoint del servizio Web protetto mediante autorizzazione di Active Directory per dimostrare i diritti di accesso di identità e di sistema; il servizio Web restituisce quindi il token del bus di servizio appropriato.For example, a system may require the client to call an Active Directory authorization protected web service endpoint to prove its identity and system access rights, and the web service then returns the appropriate Service Bus token. Questo token di firma di accesso condiviso può essere facilmente generato usando il provider di token del bus di servizio incluso nel SDK di Azure.This SAS token can be easily generated using the Service Bus token provider included in the Azure SDK.

Importante

Se si usa il controllo di accesso di Azure Active Directory, anche noto come Servizio di controllo di accesso o ACS, con il bus di servizio, si noti che il supporto per questo metodo è ora limitato ed è necessario eseguire la migrazione dell'applicazione per l'uso di SAS.If you are using Azure Active Directory Access Control (also known as Access Control Service or ACS) with Service Bus, note that the support for this method is now limited and you should migrate your application to use SAS. Per altre informazioni, vedere questo post di blog e questo articolo.For more information, see this blog post and this article.

Autenticazione della firma di accesso condivisoShared Access Signature authentication

L'autenticazione della firma di accesso condiviso garantisce l'accesso dell'utente alle risorse del bus di servizio con diritti specifici.SAS authentication enables you to grant a user access to Service Bus resources, with specific rights. Nel bus di servizio, l'autenticazione della firma di accesso condiviso implica la configurazione di una chiave di crittografia con i relativi diritti in una risorsa del bus di servizio.SAS authentication in Service Bus involves the configuration of a cryptographic key with associated rights on a Service Bus resource. I client possono quindi ottenere l'accesso a questa risorsa presentando un token di firma di accesso condiviso composto dall'URI della risorsa a cui si vuole accedere e da una scadenza firmata con la chiave configurata.Clients can then gain access to that resource by presenting a SAS token, which consists of the resource URI being accessed and an expiry signed with the configured key.

È possibile configurare le chiavi per la firma di accesso condiviso in uno spazio dei nomi del bus di servizio.You can configure keys for SAS on a Service Bus namespace. La chiave si applica a tutte le entità di messaggistica nello spazio dei nomi.The key applies to all messaging entities within that namespace. È anche possibile configurare le chiavi nelle code e negli argomenti del bus di servizio.You can also configure keys on Service Bus queues and topics. SAS è anche supportato in Inoltro di Azure.SAS is also supported on Azure Relay.

Per usare la firma di accesso condiviso, è possibile configurare un oggetto SharedAccessAuthorizationRule in uno spazio dei nomi, una coda o un argomento.To use SAS, you can configure a SharedAccessAuthorizationRule object on a namespace, queue, or topic. Questa regola include gli elementi seguenti:This rule consists of the following elements:

  • KeyName: identifica la regola.KeyName: identifies the rule.
  • PrimaryKey: è una chiave di crittografia usata per firmare/convalidare i token di firma di accesso condiviso.PrimaryKey: a cryptographic key used to sign/validate SAS tokens.
  • SecondaryKey: è una chiave di crittografia usata per firmare/convalidare i token di firma di accesso condiviso.SecondaryKey: a cryptographic key used to sign/validate SAS tokens.
  • Rights: rappresenta la raccolta di diritti Listen, Send o Manage concessi.Rights: represents the collection of Listen, Send, or Manage rights granted.

Le regole di autorizzazione configurate a livello di spazio dei nomi possono garantire l'accesso a tutte le entità in uno spazio dei nomi per i client con token firmati che usano la chiave corrispondente.Authorization rules configured at the namespace level can grant access to all entities in a namespace for clients with tokens signed using the corresponding key. In uno spazio dei nomi, una coda o un argomento del bus di servizio è possibile configurare fino a 12 regole di autorizzazione.You can configure up to 12 such authorization rules on a Service Bus namespace, queue, or topic. Per impostazione predefinita, un oggetto SharedAccessAuthorizationRule con tutti i diritti viene configurato per ogni spazio dei nomi quando ne viene eseguito il provisioning per la prima volta.By default, a SharedAccessAuthorizationRule with all rights is configured for every namespace when it is first provisioned.

Per accedere a un'entità, è necessario un token di firma di accesso condiviso generato usando un oggetto SharedAccessAuthorizationRule.To access an entity, the client requires a SAS token generated using a specific SharedAccessAuthorizationRule. Il token di firma di accesso condiviso viene generato usando l'algoritmo HMAC-SHA256 di una stringa di risorsa composta dall'URI della risorsa a cui si vuole accedere e da una scadenza, seguiti da una chiave di crittografia associata alla regola di autorizzazione.The SAS token is generated using the HMAC-SHA256 of a resource string that consists of the resource URI to which access is claimed, and an expiry with a cryptographic key associated with the authorization rule.

Il supporto per l'autenticazione della firma di accesso condiviso per il bus di servizio è incluso in Azure .NET SDK 2.0 e versioni successive.SAS authentication support for Service Bus is included in the Azure .NET SDK versions 2.0 and later. Nella firma di accesso condiviso è incluso il supporto per un oggetto SharedAccessAuthorizationRule.SAS includes support for a SharedAccessAuthorizationRule. Tutte le API che accettano una stringa di connessione come parametro includono il supporto per le stringhe di connessione della firma di accesso condiviso.All APIs that accept a connection string as a parameter include support for SAS connection strings.

Passaggi successiviNext steps