从ServiceBus 3.4.3升级到4.1.3时,SAS令牌失败

时间:2017-10-15 02:11:47

标签: azureservicebus servicebus azure-servicebusrelay

我刚刚尝试升级到serviceBus的4.1.3版本,现在我的SAS生成令牌失败了。我正在使用这些令牌与servicebus中的WCF中继连接。

我得到的错误是“超时间隔必须小于2 ^ 32-2”

令牌肯定适用于版本3.4.3。

当我生成令牌时,我正在计算1970年到3000年之间的timeToLive。我相信这是我的问题,好像我将其设置为低值我可以生成有效的新令牌(10天)。这对我不起作用,因为我需要不会过期的令牌。

现在有人如何使用timeToLive。什么是最大值,如果有任何解决方法,我可以继续使用我的SAS令牌。它们已经生成并且在现场 - 因此重新生成它们将是困难的。

我正在使用的代码如下:

Dim TimeToLive = TimeSpan.FromDays(365) 'This will fail    
Dim serviceUri = ServiceBusEnvironment.CreateServiceUri("https",
     serviceNamespace,
     servicePath).ToString().Trim("/")

Dim sasKey As String = SharedAccessSignatureTokenProvider.GetSharedAccessSignature(
     SharedAccessKeyName,
     SharedAccessKeyPrimary,
     serviceUri,
     TimeToLive)

生成的sasKey在使用时会失败。如果我将TTL设置为10天就行了。

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

根据您的描述,我还在我身边创建了一个测试演示。效果很好。

我使用了WindowsAzure.ServiceBus 4.1.3。

enter image description here

我的代码如下:

Sub Main()

    Dim serviceNamespace = " "
    Dim servicePath = " "
    Dim SharedAccessKeyName = " "
    Dim SharedAccessKeyPrimary = " "
    Dim TimeToLive = TimeSpan.FromDays(365) 'This will fail    
    Dim serviceUri = ServiceBusEnvironment.CreateServiceUri("https",
         serviceNamespace,
         servicePath).ToString().Trim("/")
    Dim sasKey As String = SharedAccessSignatureTokenProvider.GetSharedAccessSignature(
         SharedAccessKeyName,
         SharedAccessKeyPrimary,
         serviceUri,
         TimeToLive)
    Dim mfSettings As New MessagingFactorySettings()
    mfSettings.TransportType = TransportType.NetMessaging
    mfSettings.TokenProvider = TokenProvider.CreateSharedAccessSignatureTokenProvider(sasKey)
    Dim mf As MessagingFactory = MessagingFactory.Create("sb://serviceNamespace.servicebus.windows.net", mfSettings)
    ' Create Client
    Dim client As QueueClient = mf.CreateQueueClient(servicePath)

    Dim message = New BrokeredMessage("test")



    client.Send(message)

End Sub

结果:

我向它添加了八条消息。

enter image description here

答案 1 :(得分:0)

你已经连接了一个队列,如果要连接一个wcf中继,你会发现它不起作用。

请参阅Microsoft的回复 我从产品团队获悉,他们建议这是4.1.3版本中的设计行为。该变更是PM和管理团队的决定,其基础是应该定期重新请求SAS令牌。但是,这将在下一个版本中再次更改,其中将再次支持更长的到期时间。我们很遗憾无法为您提供快速解决方案。