Windows Azure újdonságok – Service Bus IV.

Ahogy korábban olvasóinknak ígértük, igyekszünk folyamatosan frissíteni a blogot a könyv megjelenése után bejelentett Azure frissítésekkel és új szolgáltatásokkal, amik bizonyos időközönként bekerülnek majd a könyv elektronikus kiadásaiba is. Ezúttal a Service Bus újdonságokat mutatjuk be egy több részes sorozatban:

Az előző bejegyzések:

A Windows Azure SDK 2.0-s változata több újdonságot is hozott a közvetített üzenetek továbbítását megvalósító üzenetsorok és feliratkozások kezelésében, és egyúttal bemutatkozott az esemény-vezérelt programozási modell is. A főbb újdonságok az alábbi témakörökbe csoportosíthatóak:

  • Újdonságok az üzenetsorok és feliratkozások kezelésében
  • Eseményvezérelt programozási modell
  • Task alapú aszinkron API
  • Shared Access Signature (SAS) autentikáció

SAS szabályok az üzenetküldő entitásokon

Szerencsére a sorokon és témákon már a Service Bus API segítségével is szerkesztheted a SAS szabályokat, az entitásokhoz tartozó QueueDescription és TopicDescription osztályok AuthorizationRules tulajdonságán keresztül. Nézzük meg rá a példát!



var entityPath = "testQueue";
var connectionString = CloudConfigurationManager.GetSetting("Microsoft.ServiceBus.ConnectionString");
var namespaceManager = NamespaceManager.CreateFromConnectionString(connectionString);

if (!namespaceManager.QueueExists(entityPath))
 namespaceManager.CreateQueue(entityPath);

var queueDescription = namespaceManager.GetQueue(entityPath);


//listázzuk ki a meglévő SAS szabályokat
foreach (var sasAuthorizationRule in queueDescription.Authorization.OfType<SharedAccessAuthorizationRule>())
{
 Console.WriteLine(sasAuthorizationRule.KeyName);
 Console.WriteLine(sasAuthorizationRule.PrimaryKey);
}

//hozzunk létre egy új szabályt
var sendRule = new SharedAccessAuthorizationRule("sendTestQueue", SharedAccessAuthorizationRule.GenerateRandomKey(), new[] { AccessRights.Send });
queueDescription.Authorization.Add(sendRule);

//mentsük el a változtatásokat
namespaceManager.UpdateQueue(queueDescription);


Mint láthatod, entitások esetén lényegesen egyszerűbb feladat ezeket a műveleteket elvégezni, mint a névtereknél.

Kliens oldali SAS hitelesítés

Minden kliensalkalmazásnak ismernie kell a használni kívánt SAS szabály nevét és a titkosításhoz használt kulcsot. Ezen értékeket célszerűen például a konfigurációs állományban helyezheted el. A SAS hitelesítés használatához a SharedAccessSignatureTokenProvider osztály egy példányára és a szolgáltatás névtér valamint entitás nevére lesz szükséged:


var keyName = "sendTestQueue";
var key = "gPpr5nzqMmc+5ZEiIxvHxu6qD+ccif8bvdyDv3Q8OTM=";
var entityPath = "testQueue";

var serviceUri = ServiceBusEnvironment.CreateServiceUri("sb", namespaceName, string.Empty);

var messagingFactory = MessagingFactory.Create(serviceUri,
 TokenProvider.CreateSharedAccessSignatureTokenProvider(keyName, key));

var sendClient = messagingFactory.CreateQueueClient(entityPath);

var helloMessage = new BrokeredMessage("Hello, Service Bus!");
helloMessage.SessionId = Guid.NewGuid().ToString();
sendClient.Send(helloMessage);

A TokenProvider használata garantálja a kliensed számára, hogy minden művelet végrehajtásához rendelkezni fog érvényes SAS lenyomattal, amíg a hitelesítő kulcs érvényes. Figyeld meg, hogy a fenti példakód már nem tartalmazza a szolgáltatásbusz eléréséhez használt kapcsolódási karakterláncot, így nem kompromittálódhat az abban található titkos kulcs.

Ezeket az újdonságokat Te is kipróbálhatod! Regisztrálj az ingyenes, 90 napos Azure előfizetésre!

Holnap új témával folytatjuk!

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés / Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés / Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés / Módosítás )

Google+ kép

Hozzászólhat a Google+ felhasználói fiók használatával. Kilépés / Módosítás )

Kapcsolódás: %s