Estoy trabajando con un objetivo S3 que creo que requiere autenticación de firma V2, pero no he podido hacer que esto funcione. Estoy usando el componente Sprightlysoft AWS.
'create an instance of the REST class Dim MyREST As New SprightlySoftAWS.REST Dim RequestURL As String 'Build the URL to call. Do not specify a bucket name or key name when listing all buckets RequestURL = MyREST.BuildS3RequestURL(True, "s3target.com", "", "", "") Dim RequestMethod As String RequestMethod = "GET" Dim ExtraRequestHeaders As New Dictionary(Of String, String) 'add a date header ExtraRequestHeaders.Add("x-amz-date", DateTime.UtcNow.ToString("r")) Dim AuthorizationValue As String 'generate the authorization header value AuthorizationValue = MyREST.GetS3AuthorizationValue(RequestURL, RequestMethod, ExtraRequestHeaders, TextBoxAWSAccessKeyId.Text, TextBoxAWSSecretAccessKey.Text) 'add the authorization header ExtraRequestHeaders.Add("Authorization", AuthorizationValue) 'call MakeRequest to submit the REST request Dim RetBool As Boolean RetBool = MyREST.MakeRequest(RequestURL, RequestMethod, ExtraRequestHeaders, "")El mensaje de error que recibo es:
"El ID y la firma de la clave de acceso de AWS no coinciden con los proporcionados. Verifique su clave y método de firma"
Según los errores y mi investigación, parecería que el objetivo requiere una firma v2, y parece haber una función de firma v2 disponible, dentro del componente Sprightlysoft AWS.
https://sprightlysoft.com/AWSComponent/Help/html/2605bafc-43dc-df45-7700-bd2fd74e1505.htm
Public Function GetSignatureVersion2Value (RequestURL As String, RequestMethod As String, SendData As String, AWSSecretAccessKey As String ) As StringIntenté que esto funcionara, pero solo estoy adivinando cómo/dónde debe usarse. Me preguntaba si alguien podría saber cómo usar esto para poder autenticar correctamente, si esta es realmente la pieza que falta del rompecabezas.