(0) exportieren Drucken
Alle erweitern

Verwenden von SAS-Authentifizierung (Shared Access Signature) mit Service Bus

In diesem Abschnitt wird beschrieben, wie das SAS-Authentifizierungsmodell (Shared Access Signature) mit Windows Azure Service Bus verwendet wird. Die hier gezeigten Beispiele sind in C# geschrieben und verwenden das Windows Azure SDK (.NET-Version 2.0). Die Szenarien umfassen die Konfiguration von Autorisierungsregeln, das Generieren von SAS-Token und die Clientautorisierung.

Ein vollständiges, funktionsfähiges Beispiel einer Service Bus-Anwendung, das die Konfiguration zeigt und SAS-Autorisierung verwendet, finden Sie unter SAS-Authentifizierung (Shared Access Signature) mit Service Bus. Ein verwandtes Beispiel, das die Verwendung von SAS-Autorisierungsregeln zeigt, die für Namespaces oder Themen zum Sichern von Service Bus-Abonnements konfiguriert werden, finden Sie hier: Verwenden von SAS-Authentifizierung (Shared Access Signature) mit Service Bus-Abonnements.

Zugreifen auf Autorisierungsregeln für den gemeinsamen Zugriff für einen Namespace

Vorgänge für den Service Bus-Namespacestamm erfordern Zertifikatauthentifizierung. Sie müssen ein Verwaltungszertifikat für Ihr Windows Azure-Abonnement hochladen. Klicken Sie zum Hochladen eines Verwaltungszertifikats im linken Bereich des Windows Azure-Verwaltungsportals auf Einstellungen. Den Themenbereich zu Windows Azure-Verwaltungszertifikaten finden Sie unter Erstellen eines Verwaltungszertifikats für Windows Azure.

Der folgende Endpunkt gilt für den Zugriff auf Autorisierungsregeln für den gemeinsamen Zugriff für einen Service Bus-Namespace:

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

Führen Sie zum Erstellen eines SharedAccessAuthorizationRule-Objekts für einen Service Bus-Namespace einen POST-Vorgang für diesen Endpunkt mit den Regelinformationen aus, die als JSON oder XML serialisiert wurden. Beispiel:

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

Verwenden Sie analog einen GET-Vorgang für den Endpunkt, um die Autorisierungsregeln zu lesen, die für den Namespace konfiguriert wurden.

Verwenden Sie den folgenden Endpunkt, um eine bestimmte Autorisierungsregel zu aktualisieren oder zu löschen:

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

Zugreifen auf Autorisierungsregeln für den gemeinsamen Zugriff für eine Entität

Sie können auf eine SharedAccessAuthorizationRule, die für eine Service Bus-Warteschlange, ein -Thema oder einen -Benachrichtigungshub konfiguriert ist, über die Auflistung AuthorizationRules in den entsprechenden QueueDescription-, TopicDescription- oder NotificationHubDescription-Objekten zugreifen.

noteHinweis
Service Bus-Benachrichtigungshubs sind zurzeit in einer Vorabversion verfügbar. Ihre allgemeine Verfügbarkeit ist für Mitte 2013 geplant. Weitere Informationen finden Sie unter Service Bus Push Notifications.

Der folgende Code zeigt, wie Autorisierungsregeln für eine Warteschlange hinzugefügt werden.

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

Verwenden von SAS-Autorisierung (Shared Access Signature)

Anwendungen, die das Windows Azure .NET SDK mit den Service Bus .NET-Bibliotheken verwenden, können SAS-Autorisierung über die Klasse SharedAccessSignatureTokenProvider verwenden. Der folgende Code zeigt die Verwendung des Tokenanbieters zum Senden von Nachrichten an eine Service Bus-Warteschlange.

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

Anwendungen können SAS auch für die Authentifizierung verwenden, indem eine SAS-Verbindungszeichenfolge in Methoden eingesetzt wird, die Verbindungszeichenfolgen annehmen.

Beachten Sie, dass Sie für den Service Bus-Namespace konfigurierte SAS-Schlüssel verwenden können, um SAS-Autorisierung mit Service Bus-Relays zu verwenden. Unterstützung zum Konfigurieren von SAS-Autorisierungsregeln für ein Relay wird in naher Zukunft verfügbar sein. Beachten Sie, dass Sie für einen Service Bus-Namespace oder für ein -Thema konfigurierte SAS-Schlüssel verwenden können, um SAS-Autorisierung mit Service Bus-Abonnements zu verwenden.

Community-Beiträge

Anzeigen:
© 2014 Microsoft