Экспорт (0) Печать
Развернуть все

Как использовать проверку подлинности подписанного URL-адреса с помощью шины обслуживания

В этом разделе описывается использование модели проверки подлинности подписанного URL-адреса (SAS) с помощью Windows Azure Service Bus. Приведенные ниже примеры написаны на языке C#. Для их реализации используется пакет SDK для Windows Azure (.NET версии 2.0). Сценарии предусматривают настройку правил авторизации, создание маркеров подписанного URL-адреса и авторизацию клиента.

Полный рабочий пример приложения Service Bus, в котором демонстрируется конфигурация и используется авторизация подписанного URL-адреса, см. в разделе Проверка подлинности подписанного URL-адреса с помощью шины обслуживания. Подходящий пример, в котором иллюстрируется использование правил авторизации SAS, настроенных для пространств имен или разделов, для обеспечения безопасности подписок Service Bus, доступен здесь: Using Shared Access Signature (SAS) authentication with Service Bus Subscriptions (Использование проверки подлинности SAS для подписок Service Bus).

Правила авторизации подписанного URL-адреса для пространства имен

Для операций с корнем пространства имен Service Bus требуется проверка подлинности сертификата. Необходимо передать сертификат управления для подписки Windows Azure. Чтобы передать сертификат управления, на левой панели Портал управления Windows Azure выберите Параметры. Дополнительные сведения сертификатах управления Windows Azure см. в разделе Создание сертификата управления в Windows Azure.

Конечная точка для правил авторизации подписанного URL-адреса в пространстве имен Service Bus выглядит следующим образом:

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

Чтобы создать объект SharedAccessAuthorizationRule в пространстве имен Service Bus, выполните операцию POST в этой конечной точке, используя данные правила, сериализованные в формате JSON или XML. Например:

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

Аналогично, для чтения правил авторизации, настроенных в пространстве имен, воспользуйтесь операцией GET в конечной точке.

Чтобы обновить или удалить определенное правило для авторизации, используйте следующую конечную точку:

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

Правила авторизации подписанного URL-адреса для сущности

Доступ к объекту SharedAccessAuthorizationRule, настроенному для очереди, раздела или центра уведомлений Service Bus можно получить с помощью коллекции AuthorizationRules в соответствующих объектах QueueDescription, TopicDescription или NotificationHubDescription.

noteПримечание
Центр уведомлений шины обслуживания в данный момент выпущен только в виде предварительной версии. Ожидается, что его выпуск станет общедоступен в середине 2013 г. Дополнительные сведения см. в разделе Service Bus Push Notifications.

В этом коде показано добавление правил авторизации для очереди.

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

Использование авторизации подписанного URL-адреса

Приложения, использующие пакет SDK для Windows Azure .NET с библиотеками Service Bus .NET, могут использовать авторизацию подписанного URL-адреса с помощью класса SharedAccessSignatureTokenProvider. В следующем коде показано использование поставщика маркера для отправки сообщений в очередь 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);

Приложения также могут использовать подписанный URL-адрес для проверки подлинности, используя строку подключения подписанного URL-адреса в методах, которые принимают строки подключения.

Обратите внимание, что для использования авторизации подписанного URL-адреса с ретрансляциями Service Bus можно использовать ключи подписанного URL-адреса, настроенные в пространстве имен Service Bus. Поддержка настройки правил авторизации подписанного URL-адреса для ретрансляции будет добавлена в ближайшем будущем. Аналогично, для использования авторизации подписанного URL-адреса с подписками Service Bus можно использовать ключи подписанного URL-адреса, настроенные для пространства имен или раздела Service Bus.

Добавления сообщества

ДОБАВИТЬ
Показ:
© 2014 Microsoft