Error en firma SAS en Azure Storage

Leandro Cabral Santana 0 Puntos de reputación
2024-09-16T17:08:14.2466667+00:00

Buen día.

Estoy intentando generar un token para un directorio dentro de un FileShare en Azure.

Hasta ahora pude crear un token para cada uno de los archivos que se encuentran ahí, pero el problema es que como estoy usando un framework externo, necesito crear un token para la carpeta, cosa de que me quede así:

{direccionDelStorage}/{nombreDelArchivo}/{token}

Estuve intentando usar ShareSasBuilder, poner Resource s o Resource d, pero sin caso.

Cómo podría hacer? Gracias!

Azure
Azure
Plataforma e infraestructura de informática en la nube para crear, implementar y administrar aplicaciones y servicios a través de una red mundial de centros de datos administrados por Microsoft.
415 preguntas
0 comentarios No hay comentarios
{count} votos

1 respuesta

Ordenar por: Muy útil
  1. Gao Chen 2,095 Puntos de reputación Proveedor de Microsoft
    2024-10-22T18:09:27.7966667+00:00

    Hola Leandro Cabral Santana,

    ¡Bienvenido(a) a Microsoft Q&A!

    Para generar un token de acceso compartido (SAS) para un directorio en un Azure File Share, puedes usar el ShareSasBuilder de la siguiente manera. Asegúrate de que estás configurando correctamente los parámetros para el directorio en lugar de los archivos individuales.

    Aquí tienes un ejemplo de cómo hacerlo:

    using Azure.Storage.Files.Shares;
    using Azure.Storage.Files.Shares.Models;
    
    // Crea una instancia del cliente de Share
    var shareClient = new ShareClient(connectionString, shareName);
    var directoryClient = shareClient.GetDirectoryClient(directoryName);
    
    // Crea un SAS para el directorio
    var sasBuilder = new ShareSasBuilder
    {
        ExpiresOn = DateTimeOffset.UtcNow.AddHours(1), // Establece la duración del token
        Resource = "d" // "d" para directorios
    };
    
    // Agrega permisos según sea necesario
    sasBuilder.SetPermissions("rwdl"); // Permisos de lectura, escritura, eliminación y listado
    
    // Genera el token SAS
    var sasToken = sasBuilder.ToSasQueryParameters(new StorageSharedKeyCredential(accountName, accountKey)).ToString();
    
    // Construye la URL completa
    var directoryUrl = $"{directoryClient.Uri}?{sasToken}";
    
    Console.WriteLine(directoryUrl);
    
    

    Nada mas ten las siguientes consideraciones:

    • Asegúrate de usar "d" para directorios.
    • Ajusta los permisos según lo que necesites (lectura, escritura, listado, etc.).
    • Establece un tiempo de expiración adecuado para el token.

    Si sigues teniendo problemas, verifica que el nombre del directorio y la cuenta de almacenamiento sean correctos. También asegúrate de que tu cuenta tenga los permisos necesarios para generar SAS, espero que la información sea útil, quedo a la espera de su respuesta.

    Atentamente,

    Gao.


    Si esta respuesta resolvió tu consulta, por favor haz clic en 'Aceptar respuesta'. Esto nos ayuda a mejorar continuamente la calidad y relevancia de nuestras soluciones.


Su respuesta

Las respuestas se pueden marcar como respuestas aceptadas por el autor de la pregunta, lo que ayuda a los usuarios a conocer la respuesta que resolvió el problema del autor.