Hi All
I am working on Dynamics 365 Online..I'm facing a Permission error when i try to call an external Azure WebService from my plugin.
The code I wrote for that works fine in a console application, but it fails in the plugin. The code looks like the following:
error: 400 (Bad Request)
string keyName = "MyKey";
string key = "V2333344YUzgyXP83cIBgfYqFo=";
var url = "myazure.servicebus.windows.net/.../CBD06A18-0CF9-E811-A97B-000D3AA04914";
var token = GetToken(url, keyName, key);
var response = GetResultFromService(url, token);
private HttpResponseMessage GetResultFromService(string url, string token)
{
var httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", token);
httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Content-Type", "application/json");
httpClient.Timeout = new TimeSpan(0, 10, 30);
var response = httpClient.PutAsync(url,null).Result;
var responseText = response.Content.ReadAsStringAsync().Result;
return response;
}
public string GetToken(string resourceUri, string keyName, string key)
{
var expiry = GetExpiry();
string stringToSign = WebUtility.UrlEncode(resourceUri) + "\n" + expiry;
HMACSHA256 hmac = new HMACSHA256(Encoding.UTF8.GetBytes(key));
var signature = Convert.ToBase64String(hmac.ComputeHash(Encoding.UTF8.GetBytes(stringToSign)));
var sasToken = String.Format(CultureInfo.InvariantCulture, "SharedAccessSignature sr={0}&sig={1}&se={2}&skn={3}",
WebUtility.UrlEncode(resourceUri), WebUtility.UrlEncode(signature), expiry, keyName);
return sasToken;
}
Any help?
Thanks
BV