Exporter (0) Imprimer
Développer tout

Utilisation de l'authentification avec signature d'accès partagé avec Service Bus

Cette section explique comment utiliser le modèle d'authentification SAP (signature d'accès partagé) avec le Windows Azure Service Bus. Les exemples ci-après sont écrits en C# et utilisent Windows Azure SDK (.NET version 2.0). Les scénarios décrivent la configuration des règles d'autorisation, la création de jetons SAP et l'autorisation du client.

Pour une illustration complète et fonctionnelle d'une application Service Bus avec la configuration et l'autorisation SAP, consultez la rubrique Authentification avec signature d'accès partagé avec Service Bus. Un exemple illustrant l'utilisation des règles d'autorisation SAP (Signature d'Accès Partagé) configurées sur des espaces de noms ou des rubriques pour sécuriser les abonnements Service Bus est disponible ici : Utilisation de l'authentification SAP (signature d'accès partagé) avec les abonnements Service Bus.

Accès aux règles d'autorisation du partage d'accès dans un espace de noms

Les opérations effectuées à la racine d'un espace de noms du Service Bus requièrent une authentification par certificat. Vous devez télécharger un certificat de gestion pour votre abonnement Windows Azure. Pour ce faire, cliquez sur Paramètres dans le volet gauche du Portail de gestion Windows Azure. Pour plus d'informations sur le sujet suivant les certificats de gestion Windows Azure, consultez la rubrique Création d'un certificat de gestion pour Windows Azure.

Le point de terminaison permettant d'accéder aux règles d'autorisation de l'accès partagé dans un espace de noms de Service Bus est le suivant :

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

Pour créer un objet SharedAccessAuthorizationRule sur un espace de noms de Service Bus, exécutez une opération POST sur ce point de terminaison en sérialisant les informations de la règle (JSON ou XML). Par exemple :

// 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;

De même, une opération GET sur le point de terminaison permet de lire les règles d'autorisation configurées sur l'espace de noms.

Pour mettre à jour ou supprimer une règle d'autorisation spécifique, utilisez le point de terminaison suivant :

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

Accès aux règles d'autorisation du partage d'accès sur une entité

Vous pouvez accéder à la règle SharedAccessAuthorizationRule configurée sur une file d'attente, une rubrique ou un concentrateur de notification de Service Bus via la collection AuthorizationRules dans les objets QueueDescription, TopicDescription ou NotificationHubDescription correspondants.

noteRemarque
Les concentrateurs de notification de Service Bus font actuellement l'objet d'une version préliminaire et devraient être disponibles vers le milieu de l'année 2013. Pour plus d'informations, consultez Service Bus Push Notifications.

Le code suivant indique comment ajouter des règles d'autorisation à une file d'attente.

// 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);

Utilisation d'une autorisation avec signature d’accès partagé

Les applications qui utilisent Windows Azure .NET SDK avec les bibliothèques .NET du Service Bus peuvent employer une autorisation SAP dans la classe SharedAccessSignatureTokenProvider. Le code suivant indique comment utiliser le fournisseur de jetons pour envoyer des messages dans la file d'attente d'un 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);

Les applications peuvent également utiliser la signature de partage d'accès à l'aide d'une chaîne de connexion SAP dans des méthodes qui autorisent les chaînes de connexion.

Notez bien que pour employer une autorisation SAP avec des relais de Service Bus, vous pouvez utiliser des clés SAP configurées sur l'espace de noms de Service Bus. La prise en charge de la configuration des règles d'autorisation SAP sur un relais est prévue prochainement. De même, si vous souhaitez utiliser une autorisation SAP avec des abonnements de Service Bus, vous pouvez employer les clés SAP configurées sur un espace de noms ou une rubrique de Service Bus.

Ajouts de la communauté

Afficher:
© 2014 Microsoft