Punit Ganshani Punit Ganshani - 5 months ago 19
Node.js Question

Azure ServiceBus Token Expired

I am accessing Azure ServiceBus using NodeJS and it worked fine for several days. All of a sudden, I started receiving an error

Subscription Deletion Error :Error: 401 - ExpiredToken: . TrackingId:xxxxxx-xxxxxxx,TimeStamp:4/8/2015 12:32:54 PM


I am using the connection string to connect to ServiceBus



var azure = require('azure');

var serviceBusConnectionString = "Endpoint=sb://somens.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=mykey";

var serviceBusService = azure.createServiceBusService(serviceBusConnectionString);

var rule = {
deleteDefault: function () {
serviceBusService.deleteRule(topicName,
subscriptionName,
azure.Constants.ServiceBusConstants.DEFAULT_RULE_NAME,
rule.handleError);
},
create: function () {
var ruleOptions = {
sqlExpressionFilter: subscriptionCriteria
};
rule.deleteDefault();
serviceBusService.createRule(topicName,
subscriptionName,
filterName,
ruleOptions,
rule.handleError);
},
handleError: function (error) {
if (error) {
console.log(error);
}
}
} //rule


serviceBusService.deleteSubscription(topicName, subscriptionName, function (error) {
if (error) {
console.log("Subscription Deletion Error :" + error);
createMessageSubscription();
}
else {
console.log('Subscription deleted : ' + subscriptionName);
createMessageSubscription();
}
}); //deleteSubscription





There is only one Shared Access Policy 'RootManageSharedAccessKey' with permissions to 'Manage, Send, Listen'

What could be wrong in this?

Answer

OK, this problem comes when the time on the machine is older than the current time.

Fix:

sudo service ntp stop sudo ntpdate -s time.nist.gov sudo service ntp start

If you want to put this in /etc/rc.local use the following:

( /etc/init.d/ntp stop until ping -nq -c3 8.8.8.8; do echo "Waiting for network..." done ntpdate -s time.nist.gov /etc/init.d/ntp start )&

That should update the time on boot and then the Azure error on expired token will not be thrown