Esporta (0) Stampa
Espandi tutto

Come utilizzare l'autenticazione della firma di accesso condiviso con Service Bus

In questa sezione viene descritto come utilizzare il modello di autenticazione della firma di accesso condiviso con Service Bus di Windows Azure. Gli esempi illustrati sono scritti in C# e utilizzano Windows Azure SDK (.NET versione 2.0). Negli scenari sono incluse le regole di configurazione e autorizzazione, la generazione di token di firma di accesso condiviso e l'autorizzazione del client.

Per un esempio di lavoro completo di un'applicazione di Service Bus che illustri la configurazione e utilizzi l'autorizzazione della firma di accesso condiviso, vedere Autenticazione della firma di accesso condiviso con Service Bus. Un esempio correlato che illustra l'utilizzo delle regole di autorizzazione di firma di accesso condiviso configurate negli spazi dei nomi e negli argomenti per la protezione delle sottoscrizioni di Service Bus è disponibile nella pagina relativa all'utilizzo dell'autenticazione di firma di accesso condiviso con le sottoscrizioni di Service Bus.

Accesso alle regole di autorizzazione di accesso condiviso su uno spazio dei nomi

Per le operazioni sulla radice dello spazio dei nomi di Service Bus è necessaria l'autenticazione del certificato. È necessario caricare un certificato di gestione per la sottoscrizione di Windows Azure. Per caricare un certificato di gestione, fare clic su Impostazioni nel pannello di sinistra del Portale di gestione della piattaforma Windows Azure. Per ulteriori informazioni sui certificati di gestione di Windows Azure, vedere l'argomento relativo alla creazione di un certificato di gestione per Windows Azure.

L'endpoint per l'accesso alle regole di autorizzazione di accesso condiviso su uno spazio dei nomi di Service Bus è simile al seguente:

https://management.core.windows.net/{subscriptionId}/services/ServiceBus/namespaces/{namespace}/AuthorizationRules/

Per creare un oggetto SharedAccessAuthorizationRule su uno spazio dei nomi di Service Bus, eseguire un'operazione POST su questo endpoint con le informazioni relative alle regole serializzate come JSON o XML, come indicato nel seguente esempio:

// Base address for accessing authorization rules on a namespace
string baseAddress = @"https://management.core.windows.net/<subscriptionId>/services/ServiceBus/namespaces/<namespace>/AuthorizationRules/";

// Configure authorization rule with base64-encoded 256-bit key and Send rights
var sendRule = new SharedAccessAuthorizationRule("contosoSendAll",
    SharedAccessAuthorizationRule.GenerateRandomKey(),
    new[] { AccessRights.Send });

// Operations on the Service Bus namespace root require certificate authentication.
WebRequestHandler handler = new WebRequestHandler
{
    ClientCertificateOptions = ClientCertificateOption.Manual
};
// Access the management certificate by subject name
handler.ClientCertificates.Add(GetCertificate(<certificateSN>));

HttpClient httpClient = new HttpClient(handler)
{
    BaseAddress = new Uri(baseAddress)
};
httpClient.DefaultRequestHeaders.Accept.Add(
    new MediaTypeWithQualityHeaderValue("application/json"));
httpClient.DefaultRequestHeaders.Add("x-ms-version", "2012-03-01");

// Execute a POST operation on the baseAddress above to create an auth rule
var postResult = httpClient.PostAsJsonAsync("", sendRule).Result;

In modo analogo, utilizzare un'operazione GET sull'endpoint per leggere le regole di autorizzazione configurate nello spazio dei nomi.

Per aggiornare o eliminare una regola di autorizzazione specifica, utilizzare l'endpoint riportato di seguito:

https://management.core.windows.net/{subscriptionId}/services/ServiceBus/namespaces/{namespace}/AuthorizationRules/{KeyName}

Accesso alle regole di autorizzazione di accesso condiviso su un'entità

È possibile accedere a un oggetto SharedAccessAuthorizationRule configurato in una coda, un argomento o un hub notifiche di Service Bus tramite la raccolta AuthorizationRules nell'oggetto QueueDescription, TopicDescription o NotificationHubDescription correlato.

noteNota
Gli hub notifiche di Service Bus sono attualmente disponibili in versione non definitiva. Il passaggio alla fase GA (General Availability) è previsto entro la metà del 2013. Per ulteriori informazioni, vedere Service Bus Push Notifications.

Nel codice riportato di seguito viene illustrato come aggiungere regole di autorizzazione per una coda.

// Create an instance of NamespaceManager for the operation
NamespaceManager nsm = NamespaceManager.CreateFromConnectionString( 
    <connectionString> );
QueueDescription qd = new QueueDescription( <qPath> );

// Create a rule with send rights with keyName as "contosoQSendKey"
// and add it to the queue description.
qd.Authorization.Add(new SharedAccessAuthorizationRule("contosoSendKey", 
    SharedAccessAuthorizationRule.GenerateRandomKey(), 
    new[] { AccessRights.Send }));

// Create a rule with listen rights with keyName as "contosoQListenKey"
// and add it to the queue description.
qd.Authorization.Add(new SharedAccessAuthorizationRule("contosoQListenKey",
    SharedAccessAuthorizationRule.GenerateRandomKey(),
    new[] { AccessRights.Listen }));

// Create a rule with manage rights with keyName as "contosoQManageKey"
// and add it to the queue description.
// A rule with manage rights must also have send and receive rights.
qd.Authorization.Add(new SharedAccessAuthorizationRule("contosoQManageKey",
    SharedAccessAuthorizationRule.GenerateRandomKey(),
    new[] {AccessRights.Manage, AccessRights.Listen, AccessRights.Send }));

// Create the queue.
nsm.CreateQueue(qd);

Utilizzo dell'autorizzazione della firma di accesso condiviso

Le applicazioni che utilizzano Windows Azure .NET SDK con le librerie di Service Bus .NET possono utilizzare l'autorizzazione della firma di accesso condiviso tramite la classe SharedAccessSignatureTokenProvider. Nel codice riportato di seguito viene illustrato l'utilizzo del provider di token per l'invio di messaggi a una coda di Service Bus.

Uri runtimeUri = ServiceBusEnvironment.CreateServiceUri("sb", 
    <serviceNamespace>, string.Empty);
MessagingFactory mf = MessagingFactory.Create(runtimeUri, 
    TokenProvider.CreateSharedAccessSignatureTokenProvider(keyName, key));
QueueClient sendClient = mf.CreateQueueClient(qPath);

//Sending hello message to queue.
BrokeredMessage helloMessage = new BrokeredMessage("Hello, Service Bus!");
helloMessage.MessageId = "SAS-Sample-Message";
sendClient.Send(helloMessage);

Le applicazioni possono inoltre utilizzare l'autorizzazione della firma di accesso condiviso tramite una stringa di connessione della firma di accesso condiviso nei metodi che accettano tali stringhe.

Tenere presente che per utilizzare l'autorizzazione della firma di accesso condiviso con gli inoltri di Service Bus, è possibile utilizzare le chiavi di firma di accesso condiviso configurate nello spazio dei nomi di Service Bus. A breve verrà aggiunto il supporto per la configurazione delle regole di autorizzazione della firma di accesso condiviso in un inoltro. In modo analogo, per utilizzare l'autorizzazione della firma di accesso condiviso con le sottoscrizioni di Service Bus, è possibile utilizzare le chiavi di firma di accesso condiviso configurate in uno spazio dei nomi o un argomento di Service Bus.

Aggiunte alla community

Microsoft sta conducendo un sondaggio in linea per comprendere l'opinione degli utenti in merito al sito Web di MSDN. Se si sceglie di partecipare, quando si lascia il sito Web di MSDN verrà visualizzato il sondaggio in linea.

Si desidera partecipare?
Mostra:
© 2014 Microsoft