none
The server failed to authenticate the request.

    Frage

  • Hallo Zusammen,

    ich versuche einen Request auf den "HostedServiceName" abzusetzten, da es über die API von Microsoft keine möglichkeit gibt, sondern nur über einen HttpRequest.

    Nun kriege ich aber:
    <Error xmlns="http://schemas.microsoft.com/windowsazure" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><Code>AuthenticationFailed</Code><Message>The server failed to authenticate the request. Verify that the certificate is valid and is associated with this subscription.</Message></Error>

    Das Zertifikat wird aber gefunden (Thumbprint): 1782CE290BED046556B6686327819DDCB1D1EC0E

    Mein Code:

     Dim subscriptionId As String = "mySubscription-ID"
    
    
                Dim operationName As String = "hostedservices"
    
    
                Dim requestUri As Uri = New Uri("https://management.core.windows.net/" _
                                        + subscriptionId _
                                        + "/services/" _
                                        + operationName)
    
    
                Dim request As HttpWebRequest = HttpWebRequest.Create(requestUri)
    
    
                request.Headers.Add("x-ms-version", "2010-10-28")
                request.Method = "GET"
                request.ContentType = "application/xml"
                request.ReadWriteTimeout = "500000"
                request.Timeout = "500000"
    
                request.ClientCertificates.Add(GetX509Certificate2("Windows Azure Tools"))
    
                Try
    
                    Dim response As HttpWebResponse = request.GetResponse()
    
                    Dim responseStream As Stream = response.GetResponseStream()
                    Dim reader As StreamReader = New StreamReader(responseStream)
    
                    WriteToFile(reader.ReadToEnd())
    
                    response.Close()
                    responseStream.Close()
                    reader.Close()
    
                Catch e As WebException
                    Dim resp As System.Net.WebResponse = e.Response
                    Dim streamReader As StreamReader = New StreamReader(resp.GetResponseStream())
                    WriteToFile("error:" & streamReader.ReadToEnd)
                End Try
    
    
    Private Function GetX509Certificate2(ByVal thumbprint As String) As X509Certificate2
    
            Dim x509Certificate2 As X509Certificate2 = Nothing
            Dim store As X509Store = New X509Store(StoreName.My, StoreLocation.LocalMachine)
            Try
    
                Dim x509Certificate2Collection As X509Certificate2Collection = New X509Certificate2Collection
                store.Open(OpenFlags.ReadOnly Or OpenFlags.OpenExistingOnly)
    
                For Each cert As X509Certificate2 In store.Certificates
                    If cert.Issuer = "CN=" & thumbprint Then
                        x509Certificate2 = cert
                        WriteToFile("cert found!" & cert.Thumbprint.ToString)
    
                    End If
    
                Next
    
            Catch ex As Exception
            Finally
                store.Close()
            End Try
    
            Return x509Certificate2
    
        End Function

    Das Cert ist auch im Managementstudio zu finden unter "www.windows.azure.com".

    Spezielle Einstellungen habe ich nicht vorgenommen.
    Das Event wird beim OnStart event des RoleEntryPoints ausgeführt.

    Das OnStart-Event wird mit " <Runtime executionContext="elevated" />" ausgeführt.

    Diesen Artikel habe ich Bereits auch probiert:"http://msdn.microsoft.com/en-us/library/windowsazure/ee460782.aspx", leider ohne Erfolg.

    Hat irgendjemand einen Vorschlag oder einen Hinweiß warum es knallt?

    Viele Grüße

    Lars

    Donnerstag, 29. März 2012 14:17

Antworten

  • Update:
    Ich habe das falsche Zertifikat geprüft, es gibt einmal das :HostedCertificate und das ManagementCertificate, beim Request muss man das ManagementCertificate mitgeben.

    Gruß

    Lars

    • Als Antwort markiert contentXXL Freitag, 30. März 2012 07:16
    Freitag, 30. März 2012 07:15