How to specify a management certificate In azure windows using REST Api

I am going to list all management certificates in azure windows signature. And I tried with the following code. But that gives me an exception. And I could find that response is null and the exception message is "The remote server returned an error: (403) Forbidden."

Please help me with this. Msdn is not an example for this :(

 using System; using System.Collections.Generic; using System.Net; using System.Security.Cryptography.X509Certificates; using System.Xml; using System.Xml.Linq; class ManagemenCertificateViewer { public static void Runme() { string msVersion = "2012-03-01"; string subscriptionId = "I used the subscription Id here"; try { ListManagementCertificates(subscriptionId, msVersion); } catch (Exception ex) { Console.WriteLine("Exception caught: "); Console.WriteLine(ex.Message); } } private static void ListManagementCertificates(string subscriptionId, string version) { string uriFormat = "https://management.core.windows.net/{0}/certificates"; Uri uri = new Uri(string.Format(uriFormat, subscriptionId)); HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri); request.Method = "GET"; request.Headers.Add("x-ms-version", version); request.ContentType = "application/xml"; XDocument responseBody = null; HttpStatusCode statusCode; HttpWebResponse response; try { response = (HttpWebResponse)request.GetResponse(); } catch (WebException ex) { // GetResponse throws a WebException for 400 and 500 status codes response = (HttpWebResponse)ex.Response; } statusCode = response.StatusCode; if (response.ContentLength > 0) { using (XmlReader reader = XmlReader.Create(response.GetResponseStream())) { responseBody = XDocument.Load(reader); } } response.Close(); if (statusCode.Equals(HttpStatusCode.OK)) { XNamespace wa = "http://schemas.microsoft.com/windowsazure"; XElement storageServices = responseBody.Element(wa + "SubscriptionCertificates"); int mngmntCertificateCount = 0; foreach (XElement storageService in storageServices.Elements(wa + "SubscriptionCertificate")) { string publicKey = storageService.Element(wa + "SubscriptionCertificatePublicKey").Value; string thumbprint = storageService.Element(wa + "SubscriptionCertificateThumbprint").Value; string certificateData = storageService.Element(wa + "SubscriptionCertificateData").Value; string timeCreated = storageService.Element(wa + "TimeCreated").Value; Console.WriteLine( "Certificate[{0}]{1} SubscriptionCertificatePublicKey: {2}{1} SubscriptionCertificateThumbprint: {3}{1} certificateData{4}{1} timeCreated{5}{1}", mngmntCertificateCount++, Environment.NewLine, publicKey, thumbprint, certificateData, timeCreated); } } else { Console.WriteLine("List Management certificates returned an error:"); Console.WriteLine("Status Code: {0} ({1}):{2}{3}", (int)statusCode, statusCode, Environment.NewLine, responseBody.ToString(SaveOptions.OmitDuplicateNamespaces)); } return; } } 
+4
source share
2 answers
Error

403 means something is wrong with your management certificate used to authenticate your service management API requests. I don’t see you adding a management certificate to your code along with your request. You may find this link useful for authenticating service control API requests: http://msdn.microsoft.com/en-us/library/windowsazure/ee460782 .

NTN.

+1
source

Thank you for working as I expected. I just add the following line and the GetCertificate (arg1) 'method

 request.ClientCertificates.Add(GetCertificate(certThumbprint)); 

One more thing in Msdn will help you find the tag in the body of the response called

 <TimeCreated>time-created</TimeCreated> 

But the api is not responding to the TimeCreated just created.

 <Created> ..... </Created> 
+3
source

Source: https://habr.com/ru/post/1438808/


All Articles