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

これは、Javaサービスバスの実装用の設定コードです。共有アクセスキーではなく、共有アクセスシグネチャを渡すことに興味があります。私はこの実装がjava azure sdkのためにこれをサポートしているかどうかはわかりません。どのくらい私はこれを行うでしょう。私は、トークン変数に共有アクセス署名トークンを使用すると、401-unauthorizedエラーが発生します。何か案は?Javaサービスバス共有アクセストークン

答えて

2

Java用のAzureサービスバスSDKのsource codeによると、機能configureWithSASAuthenticationための4つの引数はnamespacesasKeyNamesasKey & serviceBusRootUri(デフォルトパス ".servicebus.windows.net")である必要があります。

namespacesasKeyName & sasKeyあなたがそれらを見つけることができますあなたのサービス・バスの下部にCONNECTION INFORMATIONボタンをクリックを経由して、以下の図を参照してください。

図1のサービス・バス・ページの下部にCONNECTION INFORMATIONボタン enter image description here

図2コピーCONNECTION STRINGと、例えば、接続文字列を名前空間、sasKeyName & sasKey enter image description here

を抽出Endpoint=sb://abc-ns.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;[email protected]#=である場合、namespace,sasKeyName,sasKeyは、それぞれabc-ns,RootManageSharedAccessKey,[email protected]#=である。

コードは以下のとおりです。

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

そして、あなたはまた、あなたのサービス・バスのページのCONFIGUREタブでそれらを見つけることができ、次の図を参照してください。

図3. CONFIGUREタブ enter image description here

0

私はあなたがここにConfigurationオブジェクトを作成したことがわかります。 、

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

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

またはキューを作成するには、例えば:通常、我々は例えば、Javaで話題をクリートするためにそれを使用

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

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

とも我々は共有アクセス署名して作成することができます トピックを作成します(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"); 

がキュー(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"); 

名前空間、sasKeyName、sasKeyは、Perterの示したようにポータルで設定されます。

関連する問題