Hi,
I'm using Service Bus 1.0 for Windows Server (on premise) and I am tring to call TopicClient.SendBatch().
In the (Windows) user making the call is 'manage user' on the entire namespace, the call works fine.
If the user has onlysend and listen rights on a specific topic, the call toTopicClient.SendBatch() throws the following exception:
Unhandled Exception: System.UnauthorizedAccessException: 40100: Unauthorized.TrackingId:ed93d168-36a8-4357-b4755b0d679a2165_G******_G******,TimeStamp:19.12.2013 13:37:00 ---> System.ServiceModel.FaultException: 40100:
Unauthorized. TrackingId:ed93d168-36a8-4357-b475-5b0d679a2165_G*******_G********,TimeStamp:19.12.2013 13:37:00
If I call TopicClient.Send(), with the above permissions, the call works fine.
The send and listen permissions are granted from code, as follows:
topicDescription.Authorization.Add(
new AllowRule("NamespaceName", "nameidentifier", "machine\\username",
new List<AccessRights> { AccessRights.Listen, AccessRights.Send }));
All users are local Windows users, not domain accounts - no special permissions, just simple accounts members of the local 'Users' group. Both the client and the SB server are on the same machine.
Does anyone know if this is expected, or if the authorization should be set-up in another way?
---------------------------
The full stack trace is:
System.UnauthorizedAccessException occurred
HResult=-2147024891
Message=40100: Unauthorized.TrackingId:d2f234f1-b8bf-4b4b-8abf-a1dea7da11ff_G****-PC,TimeStamp:19.12.2013 15:44:41
Source=Microsoft.ServiceBus
StackTrace:
at Microsoft.ServiceBus.Messaging.Sbmp.SbmpMessageSender.EndSendCommand(IAsyncResult result)
at Microsoft.ServiceBus.Messaging.Sbmp.SbmpMessageSender.OnEndSend(IAsyncResult result)
at Microsoft.ServiceBus.Messaging.Sbmp.SbmpMessageSender.OnSend(TrackingContext trackingContext, IEnumerable`1 messages, TimeSpan timeout)
at Microsoft.ServiceBus.Messaging.MessageSender.Send(TrackingContext trackingContext, IEnumerable`1 messages, TimeSpan timeout)
at Microsoft.ServiceBus.Messaging.MessageSender.SendBatch(IEnumerable`1 messages)
at Microsoft.ServiceBus.Messaging.TopicClient.SendBatch(IEnumerable`1 messages)
at...
InnerException: System.ServiceModel.FaultException
HResult=-2146233087
Message=40100: Unauthorized.TrackingId:d2f234f1-b8bf-4b4b-8abf-a1dea7da11ff_G****-PC,TimeStamp:19.12.2013 15:44:41
Source=Microsoft.ServiceBus
Action=http://schemas.microsoft.com/servicebus/2010/08/protocol/Fault
StackTrace:
Server stack trace:
at Microsoft.ServiceBus.Messaging.Sbmp.DuplexRequestBindingElement.DuplexRequestSessionChannel.ThrowIfFaultMessage(Message wcfMessage)
at Microsoft.ServiceBus.Messaging.Sbmp.DuplexRequestBindingElement.DuplexRequestSessionChannel.HandleMessageReceived(IAsyncResult result)
Exception rethrown at [0]:
at Microsoft.ServiceBus.Common.AsyncResult.End[TAsyncResult](IAsyncResult result)
at Microsoft.ServiceBus.Messaging.Sbmp.DuplexRequestBindingElement.DuplexRequestSessionChannel.DuplexCorrelationAsyncResult.End(IAsyncResult result)
at Microsoft.ServiceBus.Messaging.Sbmp.DuplexRequestBindingElement.DuplexRequestSessionChannel.EndRequest(IAsyncResult result)
at Microsoft.ServiceBus.Messaging.Channels.ReconnectBindingElement.ReconnectChannelFactory`1.RequestSessionChannel.RequestAsyncResult.<GetAsyncSteps>b__4(RequestAsyncResult thisPtr, IAsyncResult r)
at Microsoft.ServiceBus.Messaging.IteratorAsyncResult`1.StepCallback(IAsyncResult result)
Exception rethrown at [1]:
at Microsoft.ServiceBus.Common.AsyncResult.End[TAsyncResult](IAsyncResult result)
at Microsoft.ServiceBus.Common.AsyncResult`1.End(IAsyncResult asyncResult)
at Microsoft.ServiceBus.Messaging.Channels.ReconnectBindingElement.ReconnectChannelFactory`1.RequestSessionChannel.EndRequest(IAsyncResult result)
at Microsoft.ServiceBus.Messaging.Sbmp.RedirectBindingElement.RedirectContainerChannelFactory`1.RedirectContainerSessionChannel.RequestAsyncResult.<>c__DisplayClass17.<GetAsyncSteps>b__a(RequestAsyncResult thisPtr, IAsyncResult r)
at Microsoft.ServiceBus.Messaging.IteratorAsyncResult`1.StepCallback(IAsyncResult result)
Exception rethrown at [2]:
at Microsoft.ServiceBus.Common.AsyncResult.End[TAsyncResult](IAsyncResult result)
at Microsoft.ServiceBus.Common.AsyncResult`1.End(IAsyncResult asyncResult)
at Microsoft.ServiceBus.Messaging.Sbmp.RedirectBindingElement.RedirectContainerChannelFactory`1.RedirectContainerSessionChannel.EndRequest(IAsyncResult result)
at Microsoft.ServiceBus.Messaging.Channels.ReconnectBindingElement.ReconnectChannelFactory`1.RequestSessionChannel.RequestAsyncResult.<GetAsyncSteps>b__4(RequestAsyncResult thisPtr, IAsyncResult r)
at Microsoft.ServiceBus.Messaging.IteratorAsyncResult`1.StepCallback(IAsyncResult result)
Exception rethrown at [3]:
at Microsoft.ServiceBus.Common.AsyncResult.End[TAsyncResult](IAsyncResult result)
at Microsoft.ServiceBus.Common.AsyncResult`1.End(IAsyncResult asyncResult)
at Microsoft.ServiceBus.Messaging.Channels.ReconnectBindingElement.ReconnectChannelFactory`1.RequestSessionChannel.EndRequest(IAsyncResult result)
at Microsoft.ServiceBus.Messaging.Sbmp.SbmpTransactionalAsyncResult`1.<GetAsyncSteps>b__36(TIteratorAsyncResult thisPtr, IAsyncResult a)
at Microsoft.ServiceBus.Messaging.IteratorAsyncResult`1.StepCallback(IAsyncResult result)
Exception rethrown at [4]:
at Microsoft.ServiceBus.Common.AsyncResult.End[TAsyncResult](IAsyncResult result)
at Microsoft.ServiceBus.Common.AsyncResult`1.End(IAsyncResult asyncResult)
at Microsoft.ServiceBus.Messaging.Sbmp.SbmpMessageSender.EndSendCommand(IAsyncResult result)