2014-09-30 5 views
2

내 응용 프로그램에서 하늘색 서비스 관리 REST API를 사용하고 있습니다. 하늘에 경영 인증서를 업로드하고 지역에 사본을 가지고 있습니다. 인증을 응용 프로그램 자체의 별도 폴더 (AzureCertificate)에 보관하고 해당 위치를 참조합니다. 예 :하늘 REST API와 함께 관리 인증서 사용

string certificatePath = Server.MapPath("~/AzureCertificate/") + certificateName;

X509Certificate2 certificate = new X509Certificate2(certificatePath);

AzureCertificate -- Folder name certificateName - MyCertificatieName.cer

로컬 개발 환경에서 응용 프로그램을 실행할 때 제대로 작동합니다. 하지만 푸른 웹 사이트에서 같은 것을 배포 할 때 아래 오류가 나타납니다. 내가 요청을

string uri = apiURL + subscriptionId + "/services/hostedservices";

HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(uri);

X509Certificate2 certificate = new X509Certificate2(certificatePath);

req.ClientCertificates.Add(certificate);

req.Headers.Add("x-ms-version", "2009-10-01"); HttpWebResponse res =

(HttpWebResponse)req.GetResponse();

을 어떻게

The remote server returned an error: (403) Forbidden

이는하지만 마지막 줄에 위 말했다 예외가 발생합니다 (req.GetResponse()).

이렇게하면 관리 인증서를 사용할 수 있습니까?

내 요구 사항은 하늘색 REST API를 사용하고 하늘색으로 배포하는 응용 프로그램을 개발하는 것입니다.

+0

apiurl에 액세스 하시겠습니까? –

답변

0

Azure Management SDK를 사용하는 것이 좋습니다. 너트 켓 패키지 Microsoft.WindowsAzure.Management에서 설치할 수 있으며, 원하는 클래스/메소드를 사용하여 원하는 작업을 수행 할 수 있습니다.

이 HTTP 및 REST API를 통해 직접해야하는 경우 HttpWebRequest 대신 HttpClient을 사용하는 것이 좋습니다. (HttpClientMicrosoft.Net.Http라는 이름의 또 다른 nuget 패키지 그러면 예를 들어 당신을위한 HTTP 요청을 채울 수)에 ManagementClient.Credentials 속성을 통해 (SubscriptionCloudCredntials를 사용할 수 있습니다..

var client = new ManagementClient(
    new CertificateCloudCredentials(subscriptionId, certificate)); 
//... 
var requestMessage = new HttpRequestMessage(HttpMethod.Get, apiURL); 
await client.Credentials.ProcessHttpRequestAsync(requestMessage, 
    CancellationToken.None); 
var httpClient = new HttpClient(); 
HttpResponseMessage response = await httpClient.SendAsync(requestMessage); 
// TODO: process response, maybe: 
var responseText = response.AsString(); 

나는 client를 사용하는 것이 좋습니다 것 . 때 당신이 할 수

+0

하지만 여전히 인증서가 필요할 수 있습니다 ??? 나는 (https://management.core.windows.net//services/hostedservices) –

+0

예, 인증서 매개 변수입니다. –

1

은 또한 정확하게 관리 API와 함께 사용하기위한 올바른 방법으로 인증서를 생성하는 것이 매우 중요하다는 것을 발견했다 - 나는 증명서의 작성이 스크립트를 사용 때까지 403 오류를 얻고 있었다 :

makecert -r -pe -a sha1 -n "CN=Windows Azure Authentication Certificate" -ss my -len 2048 -sp "Microsoft Enhanced RSA and AES Cryptographic Provider" -sy 24 ManagementApiCert.cer 

나는 여기에 그것을 얻었습니다 : 몇 살 이었지만, 시도한 다른 새로운 것들이 나에게 도움이되지 않았을 때 http://blogs.msdn.com/b/davidhardin/archive/2013/08/27/azure-management-certificate-public-key-private-key.aspx.

또한 포털의 설정에서 관리 인증서 아래에있는 인증서를 업로드하십시오. SSL 또는 원격 액세스 인증서가 아닙니다.

+0

내 날을 저장했습니다. 감사 – jekcom

관련 문제