2016-03-20 6 views
0
Configuration config = 
       ServiceBusConfiguration.configureWithSASAuthentication(
         URL, 
         "RootManageSharedAccessKey", 
         token, 
         ".servicebus.windows.net" 
       ); 

Dies ist der Code für die Konfiguration der Java-Service-Bus-Implementierung. Ich bin daran interessiert, eine gemeinsame Zugriffssignatur und keinen gemeinsamen Zugriffsschlüssel zu übergeben. Ich bin mir nicht sicher, ob diese Implementierung für die Java Azure SDK dies unterstützt. Wie genau würde ich das machen? Ich erhalte immer einen 401-unautorisierten Fehler, wenn ich das Token-Token mit gemeinsamem Zugriff in der Token-Variable verwende. Irgendwelche Ideen?Java Service Bus Token für gemeinsamen Zugriff

Antwort

2

Nach den source code von Azure Service Bus SDK für Java, die vier Argumente für die Funktion configureWithSASAuthentication sollen die namespace, sasKeyName, sasKey & serviceBusRootUri (default pass ".servicebus.windows.net") sein.

Die namespace, sasKeyName & sasKey Sie sie per Klick die CONNECTION INFORMATION Schaltfläche am unteren Rand Ihres Service Bus nicht finden, sehen Sie bitte die folgenden Zahlen.

Bild 1. Die CONNECTION INFORMATION Schaltfläche am unteren Rand des Servicebus Seite enter image description here

Abb 2. Kopieren Sie die CONNECTION STRING und den Namensraum extrahieren, sasKeyName & sasKey enter image description here

Zum Beispiel kann die Verbindungszeichenfolge ist Endpoint=sb://abc-ns.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;[email protected]#=, dann sind die namespace, sasKeyName, sasKey separat abc-ns, RootManageSharedAccessKey, [email protected]#=.

Also sollte der Code wie folgt sein.

Configuration config = 
       ServiceBusConfiguration.configureWithSASAuthentication(
         "abc-ns", 
         "RootManageSharedAccessKey", 
         "[email protected]#=", 
         ".servicebus.windows.net" 
       ); 

Und Sie können sie auch auf der CONFIGURE Registerkarte Ihres Service-Bus-Seite finden, finden Sie in der Abbildung unten.

Bild 3. Die CONFIGURE Registerkarte enter image description here

0

Ich kann sehen, dass Sie hier ein Konfigurationsobjekt erstellt. Normalerweise verwenden wir ein Thema in Java creat, zB:

Configuration config = 
    ServiceBusConfiguration.configureWithSASAuthentication(
     "namespace", 
     "sasKeyName", 
     "sasKey", 
     "serviceBusRootUri" 
    ); 

ServiceBusContract service = ServiceBusService.create(config); 
TopicInfo topicInfo = new TopicInfo("TestTopic"); 
CreateTopicResult result = service.createTopic(topicInfo); 

oder eine Warteschlange zu erstellen, zB:

Configuration config = 
     ServiceBusConfiguration.configureWithSASAuthentication(
       "namespace", 
       "sasKeyName", 
       "sasKey", 
       "serviceBusRootUri" 
       ); 

ServiceBusContract service = ServiceBusService.create(config); 
QueueInfo queueInfo = new QueueInfo("TestQueue"); 
CreateQueueResult result = service.createQueue(queueInfo); 

und auch wir können sie durch den gemeinsamen Zugriff Signatur erstellen: ein Thema erstellen (C#)

Uri uri = ServiceBusEnvironment.CreateServiceUri("sb", "namespace", string.Empty); 
string name = "sasKeyName"; 
string key = "sasKey"; 

TokenProvider tokenProvider = TokenProvider.CreateSharedAccessSignatureTokenProvider(name, key); 

NamespaceManager namespaceManager = new NamespaceManager(uri, tokenProvider); 
namespaceManager.CreateTopic("DataCollectionTopic"); 

schaffen eine Warteschlange (C#):

Uri uri = ServiceBusEnvironment.CreateServiceUri("sb", 
       "namespace", string.Empty); 
string name = "sasKeyName"; 
string key = "sasKey"; 

TokenProvider tokenProvider = 
    TokenProvider.CreateSharedAccessSignatureTokenProvider(name, key); 
NamespaceManager namespaceManager = 
    new NamespaceManager(uri, tokenProvider); 
namespaceManager.CreateQueue("DataCollectionQueue"); 

Der Namespace, sasKeyName, sasKey, wird im Portal genau so konfiguriert, wie es bei Perter der Fall war.