Подписи API облачного стека с Visual Basic

Очень надеюсь, что кто-нибудь может помочь мне здесь. Я создал небольшую программу на vb.net, которая будет взаимодействовать с недавно развернутым Cloudstack.

В тот момент, когда мои API-вызовы отклоняются как 401-я неавторизованные, я явно не генерирую свою подпись должным образом.

Я извлек немного из документации, которая объясняет, как генерировать подпись для подписи запросов... Вы можете посмотреть это здесь: http://www.x85.co.uk/generatesig.txt

Я использовал пример функции, которую я нашел в Интернете, чтобы получить хэш SHA1, но нигде в этом коде он не имеет секретного ключа, так что это проблема...

Function getSHA1Hash(ByVal strToHash As String) As String
Dim sha1Obj As New Security.Cryptography.SHA1CryptoServiceProvider
Dim bytesToHash() As Byte = System.Text.Encoding.ASCII.GetBytes(strToHash)
bytesToHash = sha1Obj.ComputeHash(bytesToHash)
Dim strResult As String = ""
For Each b As Byte In bytesToHash
    strResult += b.ToString("x2")
Next
Return strResult
End Function

Я также не включил бит кодирования URL, так как я не уверен, как это сделать.

Любая помощь ценится.

Спасибо, парни!

1 ответ

Попробуйте пакет CloudStack .NET SDK NuGet

Рассчитывает подпись для вас и работает VB.NET

Вот пример грубого использования в C#. Надеюсь, вы можете перевести его на VB:

var cloudStackClient = new Client(csApiUrl, csApiKey, csApiSecret);

CloudStack.SDK.APIRequest req = new APIRequest("deleteTemplate");
req.Parameters.Add("id", id);
cloudStackClient.SendRequest(req);
Другие вопросы по тегам