Ejemplos de SAS de servicio
En este tema se muestran usos de ejemplo de firmas de acceso compartido con la API de REST. Las firmas de acceso compartido permiten proporcionar derechos de acceso a contenedores y blobs, tablas, colas o archivos. Al proporcionar una firma de acceso compartido, puede conceder a los usuarios acceso restringido a un determinado contenedor, blob, cola, tabla o intervalo de entidades de tabla durante un período de tiempo especificado. Para obtener información completa sobre la construcción, el análisis y el uso de firmas de acceso compartido, consulte Delegación de acceso con una firma de acceso compartido. Para obtener información sobre el uso de la biblioteca cliente de almacenamiento de .NET para crear firmas de acceso compartido, consulte Creación y uso de una firma de acceso compartido.
Ejemplos de blob
Esta sección contiene ejemplos que muestran firmas de acceso compartido para operaciones REST en blobs.
Ejemplo: obtener un blob mediante la firma de acceso compartido de un contenedor
Versiones anteriores a 2013-08-15
En el ejemplo siguiente se muestra cómo crear una firma de acceso compartido para acceso de lectura en un contenedor.
Los campos de firma firmados que formarán la dirección URL incluyen los siguientes:
signedstart=2009-02-09
signedexpiry=2009-02-10
signedresource=c
signedpermissions=r
signature=dD80ihBh5jfNpymO5Hg1IdiJIEvHcJpCMiCMnN/RnbI=
signedidentifier=YWJjZGVmZw==
signedversion=2012-02-12
La firma se construye del siguiente modo:
StringToSign = r + \n
2009-02-09 + \n
2009-02-10 + \n
/myaccount/pictures + \n
YWJjZGVmZw== + \n
2012-02-12
HMAC-SHA256(URL.Decode(UTF8.Encode(StringToSign))) = dD80ihBh5jfNpymO5Hg1IdiJIEvHcJpCMiCMnN/RnbI=
La dirección URL de solicitud especifica permisos de lectura en el pictures
contenedor para el intervalo designado. El recurso representado por la dirección URL de solicitud es un blob, pero la firma de acceso compartido se especifica en el contenedor. También es posible especificarla en el blob propiamente dicho.
GET https://myaccount.blob.core.windows.net/pictures/profile.jpg?sv=2012-02-12&st=2009-02-09&se=2009-02-10&sr=c&sp=r&si=YWJjZGVmZw%3d%3d&sig=dD80ihBh5jfNpymO5Hg1IdiJIEvHcJpCMiCMnN%2fRnbI%3d
HTTP/1.1
Host: myaccount.blob.core.windows.net
x-ms-date: <date>
Versión 2013-08-15 y posteriores
En el ejemplo siguiente se muestra cómo crear una firma de acceso compartido para acceso de lectura en un contenedor usando la versión 2013-08-15 de los servicios de almacenamiento.
La versión 2013-08-15 presenta nuevos parámetros de consulta que permiten al cliente emitir la solicitud para reemplazar los encabezados de respuesta para esta firma de acceso compartido solamente.
Los encabezados de respuesta y los parámetros de consulta correspondientes son los siguientes:
Nombre del encabezado de respuesta | Parámetro de consulta de SAS correspondiente |
---|---|
Cache-Control |
rscc |
Content-Disposition |
rscd |
Content-Encoding |
rsce |
Content-Language |
rscl |
Content-Type |
rsct |
Entre los campos que componen el valor string-to-sign de la firma se incluyen:
signedstart=2013-08-16
signedexpiry=2013-08-17
signedresource=c
signedpermissions=r
signedidentifier=YWJjZGVmZw==
signedversion=2013-08-15
responsecontent-disposition=file; attachment
responsecontent-type=binary
El valor string-to-sign se construye del siguiente modo:
StringToSign = r + \n
2013-08-16 + \n
2013-08-17 + \n
/myaccount/pictures + \n
YWJjZGVmZw== + \n
2013-08-15 + \n
+ \n
file; attachment + \n
+ \n
+ \n
binary
HMAC-SHA256(URL.Decode(UTF8.Encode(StringToSign))) = a39+YozJhGp6miujGymjRpN8tsrQfLo9Z3i8IRyIpnQ=
La firma de acceso compartido especifica permisos de lectura en el contenedor pictures durante el intervalo designado. El recurso representado por la dirección URL de solicitud es un blob, pero la firma de acceso compartido se especifica en el contenedor. También es posible especificarla en el blob propiamente dicho.
GET https://myaccount.blob.core.windows.net/pictures/profile.jpg?sv=2013-08-15&st=2013-08-16&se=2013-08-17&sr=c&sp=r&rscd=file;%20attachment&rsct=binary &sig=YWJjZGVmZw%3d%3d&sig=a39%2BYozJhGp6miujGymjRpN8tsrQfLo9Z3i8IRyIpnQ%3d HTTP/1.1
Para un cliente que realiza una solicitud con esta firma, se ejecutará la operación Get Blob si se cumplen los criterios siguientes:
La solicitud está autorizada correctamente.
La solicitud se realiza dentro del intervalo de tiempo especificado por la firma de acceso compartido.
La solicitud no infringe ningún término de una directiva de acceso almacenada asociada.
El blob especificado por la solicitud (/myaccount/pictures/profile.jpg) reside en el contenedor especificado como el recurso firmado (/myaccount/pictures).
Al especificar rsct=binary
y rscd=file; attachment
en la firma de acceso compartido, se invalidan los encabezados content-type y content-disposition en la respuesta, respectivamente.
Una respuesta correcta para una solicitud realizada con esta firma de acceso compartido será similar a la siguiente:
Status Response:
HTTP/1.1 200 OK
Response Headers:
x-ms-blob-type: BlockBlob
Content-Length: 11
Content-Type: binary
Content-Disposition: file; attachment
ETag: "0x8CB171DBEAD6A6B"
x-ms-version: 2013-08-15
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
Ejemplo: Carga de un blob mediante la firma de acceso compartido de un contenedor
En el ejemplo siguiente se muestra cómo crear una firma de acceso compartido para escribir un blob. En este ejemplo, construimos una firma que conceda permisos de escritura para todos los blobs del contenedor. A continuación utilizamos la firma de acceso compartido para escribir un blob en el contenedor.
Los campos firmados que incluirán la dirección URL incluyen:
signedstart=2015-07-01T08:49Z
signedexpiry=2015-07-02T08:49Z
signedresource=c
signedpermissions=w
signedidentifier=YWJjZGVmZw==
signedversion=2015-02-21
La firma se construye del siguiente modo:
StringToSign = w + \n
2015-07-01T08:49Z + \n
2015-07-02T08:49Z + \n
/myaccount/pictures + \n
YWJjZGVmZw== + \n
2013-08-15
HMAC-SHA256(URL.Decode(UTF8.Encode(StringToSign))) = Rcp6gQRfV7WDlURdVTqCa+qEArnfJxDgE+KH3TCChIs=
La dirección URL de solicitud especifica permisos de escritura en el pictures
contenedor para el intervalo designado. El recurso representado por la dirección URL de solicitud es un blob, pero la firma de acceso compartido se especifica en el contenedor. También es posible especificarla en el blob propiamente dicho.
PUT https://myaccount.blob.core.windows.net/pictures/photo.jpg?sv=2015-02-21&st=2015-07-01T08%3a49Z&se=2015-07-02T08%3a49Z&
sr=c&sp=w&si=YWJjZGVmZw%3d%3d&sig=Rcp6gQRfV7WDlURdVTqCa%2bqEArnfJxDgE%2bKH3TCChIs%3d HTTP/1.1
Host: myaccount.blob.core.windows.net
Content-Length: 12
Hello World.
Con esta firma, se llamará a Put Blob si se cumplen los siguientes criterios:
La solicitud está autorizada correctamente.
La solicitud se realiza dentro del intervalo de tiempo especificado por la firma de acceso compartido.
La solicitud no infringe ningún término de una directiva de acceso almacenada asociada.
El blob especificado por la solicitud (/myaccount/pictures/photo.jpg) reside en el contenedor especificado como el recurso firmado (/myaccount/pictures).
Ejemplo: eliminar blob mediante la firma de acceso compartido de un blob
En el siguiente ejemplo se muestra cómo crear una firma de acceso compartido que concede permisos de eliminación para un blob y elimina un blob.
Precaución
Tenga en cuenta que una firma de acceso compartido para una operación DELETE se debe distribuir con prudencia, ya que permite a un cliente eliminar datos, lo que puede tener consecuencias no deseadas.
Los campos de firma firmados que formarán la dirección URL incluyen los siguientes:
signedstart=2015-07-01T08:49:37.0000000Z
signedexpiry=2015-07-02T08:49:37.0000000Z
signedresource=b
signedpermissions=d
signature=+SzBm0wi8xECuGkKw97wnkSZ/62sxU+6Hq6a7qojIVE=
signedidentifier=YWJjZGVmZw==
signedversion=2015-02-21
La firma se construye del siguiente modo:
StringToSign = d + \n
2015-07-01T08:49:37.0000000Z + \n
2015-07-02T08:49:37.0000000Z + \n
blob/myaccount/pictures/profile.jpg + \n
YWJjZGVmZw==
2015-02-21
HMAC-SHA256(URL.Decode(UTF8.Encode(StringToSign))) = +SzBm0wi8xECuGkKw97wnkSZ/62sxU+6Hq6a7qojIVE=
La dirección URL de la solicitud especifica permisos de eliminación en el contenedor pictures durante el intervalo designado. El recurso representado por la dirección URL de solicitud es un blob y la firma de acceso compartido se especifica en ese blob. También es posible especificarla en el contenedor del blob para conceder permiso para eliminar cualquier blob del contenedor.
DELETE https://myaccount.blob.core.windows.net/pictures/profile.jpg?sv=2015-02-21&st=2015-07-01T08%3a49%3a37.0000000Z&se=2015-07-02T08%3a49%3a37.0000000Z&sr=b&sp=d&si=YWJjZGVmZw%3d%3d&sig=%2bSzBm0wi8xECuGkKw97wnkSZ%2f62sxU%2b6Hq6a7qojIVE%3d HTTP/1.1
Host: myaccount.blob.core.windows.net
Content-Length: 0
Con esta firma, se llamará a Delete Blob si se cumplen los siguientes criterios:
La solicitud está autorizada correctamente.
La solicitud se realiza dentro del intervalo de tiempo especificado por la firma de acceso compartido.
La solicitud no infringe ningún término de una directiva de acceso almacenada asociada.
El blob especificado por la solicitud (/myaccount/pictures/profile.jpg) coincide con el blob especificado como el recurso firmado.
Ejemplos de archivos
Esta sección contiene ejemplos que muestran las firmas de acceso compartido para las operaciones REST en los archivos.
Ejemplo: Obtener un archivo mediante la firma de acceso compartido de un recurso compartido
En el ejemplo siguiente se muestra cómo construir una firma de acceso compartido para el acceso de lectura en un recurso compartido.
Algunos parámetros de consulta pueden permitir que el cliente que emite la solicitud invalide los encabezados de respuesta para esta firma de acceso compartido.
Los encabezados de respuesta y los parámetros de consulta correspondientes son los siguientes:
Nombre del encabezado de respuesta | Parámetro de consulta de SAS correspondiente |
---|---|
Cache-Control |
rscc |
Content-Disposition |
rscd |
Content-Encoding |
rsce |
Content-Language |
rscl |
Content-Type |
rsct |
Entre los campos que componen el valor string-to-sign de la firma se incluyen:
signedstart=2015-07-01T08:49Z
signedexpiry=2015-07-02T08:49Z
signedresource=c
signedpermissions=r
signature=dD80ihBh5jfNpymO5Hg1IdiJIEvHcJpCMiCMnN/RnbI=
signedidentifier=YWJjZGVmZw==
signedversion=2015—02-21
responsecontent-disposition=file; attachment
responsecontent-type=binary
El valor string-to-sign se construye del siguiente modo:
StringToSign = r + \n
2015-07-01T08:49Z + \n
2015-07-02T08:49Z + \n
file/myaccount/pictures + \n
YWJjZGVmZw== + \n
2015—02-21 + \n
+ \n
file; attachment + \n
+ \n
+ \n
binary
HMAC-SHA256(URL.Decode(UTF8.Encode(StringToSign))) = a39+YozJhGp6miujGymjRpN8tsrQfLo9Z3i8IRyIpnQ=
La firma de acceso compartido especifica permisos de lectura en el pictures
recurso compartido para el intervalo designado. El recurso representado por la dirección URL de la solicitud es un archivo, pero la firma de acceso compartido se especifica en el recurso compartido. También es posible especificarlo en el propio archivo.
GET https://myaccount.file.core.windows.net/pictures/profile.jpg?sv=2015-02-21&st=2015-07-01T08:49Z&se=2015-07-02T08:49Z&sr=c&sp=r&rscd=file;%20attachment&rsct=binary&sig=YWJjZGVmZw%3d%3d&sig=a39%2BYozJhGp6miujGymjRpN8tsrQfLo9Z3i8IRyIpnQ%3d
Para un cliente que realiza una solicitud con esta firma, se ejecutará la operación Obtener archivo si se cumplen los criterios siguientes:
La solicitud está autorizada correctamente.
La solicitud se realiza dentro del intervalo de tiempo especificado por la firma de acceso compartido.
La solicitud no infringe ningún término de una directiva de acceso almacenada asociada.
El archivo especificado por la solicitud (/myaccount/pictures/profile.jpg) reside en el recurso compartido especificado como recurso firmado (/myaccount/pictures).
Al especificar rsct=binary
y rscd=file; attachment
en la firma de acceso compartido, se invalidan los content-type
encabezados y content-disposition
en la respuesta, respectivamente.
Una respuesta correcta para una solicitud realizada con esta firma de acceso compartido será similar a la siguiente:
Status Response:
HTTP/1.1 200 OK
Response Headers:
Content-Length: 11
Content-Type: binary
Content-Disposition: file; attachment
ETag: "0x8CB171DBEAD6A6B"
x-ms-version: 2015-02-21
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
Ejemplo: Cargar un archivo mediante una firma de acceso compartido en un recurso compartido
En el ejemplo siguiente se muestra cómo construir una firma de acceso compartido para escribir un archivo. En este ejemplo, se crea una firma que concede permisos de escritura para todos los archivos del recurso compartido. A continuación, usamos la firma de acceso compartido para escribir en un archivo del recurso compartido.
Los campos de firma firmados que formarán la dirección URL incluyen los siguientes:
signedstart=2015-07-01T08:49Z
signedexpiry=2015-07-02T08:49Z
signedresource=c
signedpermissions=w
signature=Rcp6gQRfV7WDlURdVTqCa+qEArnfJxDgE+KH3TCChIs=
signedidentifier=YWJjZGVmZw==
signedversion=2015-02-21
La firma se construye del siguiente modo:
StringToSign = w + \n
2015-07-01T08:49Z + \n
2015-07-02T08:49Z + \n
file/myaccount/pictures + \n
YWJjZGVmZw== + \n
2015-02-21
HMAC-SHA256(URL.Decode(UTF8.Encode(StringToSign))) = Rcp6gQRfV7WDlURdVTqCa+qEArnfJxDgE+KH3TCChIs=
La dirección URL de solicitud especifica permisos de escritura en el pictures
contenedor para el intervalo designado. El recurso representado por la dirección URL de solicitud es un blob, pero la firma de acceso compartido se especifica en el contenedor. También es posible especificarla en el blob propiamente dicho.
PUT https://myaccount.file.core.windows.net/pictures/photo.jpg?sv=2015-02-21&st=2015-07-01T08%3a49Z&se=2015-07-01T08%3a49Z&
sr=c&sp=w&si=YWJjZGVmZw%3d%3d&sig=Rcp6gQRfV7WDlURdVTqCa%2bqEArnfJxDgE%2bKH3TCChIs%3d HTTP/1.1
Host: myaccount.blob.core.windows.net
Content-Length: 12
Hello World.
Con esta firma, se llamará a Create File si se cumplen los criterios siguientes:
La solicitud está autorizada correctamente.
La solicitud se realiza dentro del intervalo de tiempo especificado por la firma de acceso compartido.
La solicitud no infringe ningún término de una directiva de acceso almacenada asociada.
El archivo especificado por la solicitud (/myaccount/pictures/photo.jpg) está en el recurso compartido especificado como recurso firmado (/myaccount/pictures).
Ejemplo: Eliminar archivo mediante la firma de acceso compartido de un archivo
En el ejemplo siguiente se muestra cómo construir una firma de acceso compartido que concede permisos de eliminación para un archivo y, a continuación, usa la firma de acceso compartido para eliminar el archivo.
Precaución
Una firma de acceso compartido para una operación DELETE debe distribuirse con criterio, ya que permitir que un cliente elimine los datos puede tener consecuencias imprevistas.
Los campos de firma firmados que formarán la dirección URL incluyen los siguientes:
signedstart=2015-07-01T08:49:37.0000000Z
signedexpiry=2015-07-02T08:49:37.0000000Z
signedresource=b
signedpermissions=d
signature=+SzBm0wi8xECuGkKw97wnkSZ/62sxU+6Hq6a7qojIVE=
signedidentifier=YWJjZGVmZw==
signedversion=2015-02-21
La firma se construye del siguiente modo:
StringToSign = d + \n
2015-07-01T08:49:37.0000000Z + \n
2015-07-02T08:49:37.0000000Z + \n
file/myaccount/pictures/profile.jpg + \n
YWJjZGVmZw==
2015-02-21
HMAC-SHA256(URL.Decode(UTF8.Encode(StringToSign))) = +SzBm0wi8xECuGkKw97wnkSZ/62sxU+6Hq6a7qojIVE=
La dirección URL de la solicitud especifica los permisos de eliminación en el recurso compartido de imágenes para el intervalo designado. El recurso representado por la dirección URL de la solicitud es un archivo y la firma de acceso compartido se especifica en ese archivo. También es posible especificarlo en el recurso compartido del archivo para conceder permiso para eliminar cualquier archivo del recurso compartido.
DELETE https://myaccount.file.core.windows.net/pictures/profile.jpg?sv=2015-02-21&st=2015-07-01T08%3a49%3a37.0000000Z&se=2015-07-02T08%3a49%3a37.0000000Z&sr=b&sp=d&si=YWJjZGVmZw%3d%3d&sig=%2bSzBm0wi8xECuGkKw97wnkSZ%2f62sxU%2b6Hq6a7qojIVE%3d HTTP/1.1
Host: myaccount.blob.core.windows.net
Content-Length: 0
Con esta firma, se llamará a Delete File si se cumplen los siguientes criterios:
La solicitud está autorizada correctamente.
La solicitud se realiza dentro del intervalo de tiempo especificado por la firma de acceso compartido.
La solicitud no infringe ningún término de una directiva de acceso almacenada asociada.
El archivo especificado por la solicitud (/myaccount/pictures/profile.jpg) coincide con el archivo especificado como recurso firmado.
Ejemplos de Cola
Esta sección contiene ejemplos que muestran firmas de acceso compartido para operaciones REST en colas. En estos ejemplos, la operación del servicio Cola solo se ejecuta cuando se cumplen los siguientes criterios:
La solicitud está autorizada correctamente.
La solicitud se realiza dentro del intervalo de tiempo especificado por la firma de acceso compartido.
La solicitud no infringe ningún término de una directiva de acceso almacenada asociada.
La cola especificada por la solicitud es la misma cola autorizada por la firma de acceso compartido.
Ejemplo: recuperar mensajes mediante una firma de acceso compartido
En el ejemplo siguiente se muestra cómo crear una firma de acceso compartido para recuperar mensajes de una cola. Esta firma concede permisos de procesamiento de mensajes para la cola. Por último, en este ejemplo se utiliza la firma de acceso compartido para recuperar un mensaje de la cola.
Examine los siguientes campos de firma firmados, la construcción de la cadena a signo y la construcción de la dirección URL que llama a la operación Obtener mensajes después de autorizar la solicitud:
signedstart=2015-07-01T08:49Z
signedexpiry=2015-07-02T08:49Z
signedpermissions=p
signature=+SzBm0wi8xECuGkKw97wnkSZ/62sxU+6Hq6a7qojIVE=
signedidentifier=YWJjZGVmZw==
signedversion=2015-02-21
StringToSign = p + \n
2015-07-01T08:49Z + \n
2015-07-02T08:49Z + \n
queue/myaccount/myqueue + \n
YWJjZGVmZw== + \n
2015-02-21
GET https://myaccount.queue.core.windows.net/myqueue/messages?visibilitytimeout=120&sv=2015-02-21&st=2015-07-01T08%3a49Z&se=2015-07-02T08%3a49Z&sp=p&si=YWJjZGVmZw%3d%3d&sig=jDrr6cna7JPwIaxWfdH0tT5v9dc%3d HTTP/1.1
Host: myaccount.queue.core.windows.net
Ejemplo: agregar un mensaje mediante una firma de acceso compartido
En el ejemplo siguiente se muestra cómo crear una firma de acceso compartido para agregar un mensaje a una cola. Esta firma concede permisos de agregar para la cola. Por último, en este ejemplo se utiliza la firma para agregar un mensaje.
Examine los siguientes campos de firma firmados, la construcción de la cadena StringToSign y la construcción de la dirección URL que llama a la operación Put Message después de autorizar la solicitud:
signedstart=2015-07-01T08:49Z
signedexpiry=2015-07-02T08:49Z
signedpermissions=a
signature= +SzBm0wi8xECuGkKw97wnkSZ/62sxU+6Hq6a7qojIVE=
signedidentifier=YWJjZGVmZw==
signedversion=2015-02-21
StringToSign = a + \n
2015-07-01T08:49Z + \n
2015-07-02T08:49Z + \n
queue/myaccount/myqueue + \n
YWJjZGVmZw== + \n
2015-02-21
POST https://myaccount.queue.core.windows.net/myqueue/messages?visibilitytimeout=120&sv=2015-02-21&st=2015-07-01T08%3a49Z&se=2015-07-02T08%3a49Z&sp=a&si=YWJjZGVmZw%3d%3d&sig=jDrr6cna7JPwIaxWfdH0tT5v9dc%3d HTTP/1.1
Host: myaccount.queue.core.windows.net
Content-Length: 100
<QueueMessage>
<MessageText>PHNhbXBsZT5zYW1wbGUgbWVzc2FnZTwvc2FtcGxlPg==</MessageText>
</QueueMessage>
Ejemplo: consultar mensajes y obtener un mensaje con una firma de acceso compartido
En el ejemplo siguiente se muestra cómo crear una firma de acceso compartido para consultar el mensaje siguiente de una cola y recuperar el número de mensajes de la cola. Esta firma concede permisos de lectura para la cola. Por último, en este ejemplo se utiliza la firma de acceso compartido para consultar un mensaje y leer después los metadatos de la cola, lo que incluye el número de mensajes.
Examine los siguientes campos de firma firmados, la construcción de la cadena a signo y la construcción de la dirección URL que llama a las operaciones Ver mensajes y Obtener metadatos de cola :
signedstart=2015-07-01T08:49Z
signedexpiry=2015-07-02T08:49Z
signedpermissions=r
signature=+SzBm0wi8xECuGkKw97wnkSZ/62sxU+6Hq6a7qojIVE=
signedidentifier=YWJjZGVmZw==
signedversion=2015-02-21
StringToSign = r + \n
2015-07-01T08:49Z + \n
2015-07-02T08:49Z + \n
queue/myacccount/myqueue + \n
YWJjZGVmZw== + \n
2015-02-21
GET https://myaccount.queue.core.windows.net/myqueue/messages?peekonly=true&sv=2015-02-21&st=2015-07-01T08%3a49Z&se=2015-07-02T08%3a49Z&sp=r&si=YWJjZGVmZw%3d%3d&sig=jDrr6cna7JPwIaxWfdH0tT5v9dc%3d HTTP/1.1
Host: myaccount.queue.core.windows.net
GET https://myaccount.queue.core.windows.net/myqueue?comp=metadata&sv=2015-02-21&st=2015-07-01T08%3a49Z&se=2015-07-01T08%3a49Z&sp=r&si=YWJjZGVmZw%3d%3d&sig=jDrr6cna7JPwIaxWfdH0tT5v9dc%3d HTTP/1.1
Host: myaccount.queue.core.windows.net
Ejemplos de Tabla
Esta sección contiene ejemplos que muestran firmas de acceso compartido para operaciones REST en tablas. En estos ejemplos, la operación de Table service solo se ejecuta cuando se cumplen los siguientes criterios:
La solicitud está autorizada correctamente.
La solicitud se realiza dentro del intervalo de tiempo especificado por la firma de acceso compartido.
La solicitud no infringe ningún término de una directiva de acceso almacenada asociada.
La cola especificada por la solicitud es la misma cola autorizada por la firma de acceso compartido.
Ejemplo: consultar una tabla mediante una firma de acceso compartido
En el ejemplo siguiente se muestra cómo crear una firma de acceso compartido para consultar entidades de una tabla. La firma concede permisos de consulta para un intervalo determinado de la tabla. Por último, en este ejemplo se utiliza la firma de acceso compartido para consultar entidades dentro del intervalo.
Examine los campos de firma firmados siguientes, la construcción de la cadena StringToSign y la construcción de la dirección URL que llama a la operación Query Entities. Los resultados de esta operación Query Entities solo incluirán las entidades del intervalo definido por startpk
, startrk
, endpk
y endrk
.
signedstart=2015-07-01T08:49Z
signedexpiry=2015-07-02T08:49Z
signedpermissions=r
signature= +SzBm0wi8xECuGkKw97wnkSZ/62sxU+6Hq6a7qojIVE=
signedidentifier=YWJjZGVmZw==
signedversion=2015-02-21
startpk="Coho Winery"
startrk="Auburn"
endpk="Coho Winery"
endrk="Seattle"
String-To-Sign = r + \n
2015-07-01T08:49Z + \n
2015-07-02T08:49Z + \n
table/myaccount/mytable + \n
YWJjZGVmZw== + \n
2015-02-21 + \n
Coho Winery + \n
Auburn + \n
Coho Winery + \n
Seattle
GET https://myaccount.table.core.windows.net/MyTable?$filter=PartitionKey%20eq%20'Coho%20Winery'&sv=2015-02-21&tn=MyTable&st=2015-07-01T08%3a49Z&se=2015-07-02T08%3a49Z&sp=r&si=YWJjZGVmZw%3d%3d&sig=jDrr6cna7JPwIaxWfdH0tT5v9dc%3d&spk=Coho%20Winery&srk=Auburn&epk=Coho%20Winery&erk=Seattle HTTP/1.1
Host: myaccount.table.core.windows.net
DataServiceVersion: 3.0;NetFx
MaxDataServiceVersion: 3.0;NetFx
Ejemplo: actualizar una tabla mediante una firma de acceso compartido
En el ejemplo siguiente se muestra cómo crear una firma de acceso compartido para actualizar entidades de una tabla. La firma concede permisos de actualización para un intervalo determinado de entidades. Por último, en este ejemplo se utiliza la firma de acceso compartido para actualizar una entidad del intervalo.
Examine los campos de firma firmados siguientes, la construcción de la cadena StringToSign y la construcción de la dirección URL que llama a la operación Update Entity. La operación Update Entity solo puede actualizar entidades dentro del intervalo de partición definido por startpk
y endpk
.
signedstart=2015-07-01T08:49Z
signedexpiry=2015-07-02T08:49Z
signedpermissions=u
signature= +SzBm0wi8xECuGkKw97wnkSZ/62sxU+6Hq6a7qojIVE=
signedidentifier=YWJjZGVmZw==
signedversion=2015-02-21
startpk="Coho Winery"
endpk="Coho Winery"
String-To-Sign = u + \n
2015-07-01T08:49Z + \n
2015-07-02T08:49Z + \n
table/myaccount/mytable + \n
YWJjZGVmZw== + \n
2015-02-21 + \n
Coho Winery + \n
+ \n
Coho Winery + \n
MERGE https://myaccount.table.core.windows.net/MyTable(PartitionKey='Coho%20Winery',RowKey='Seattle')?sv=2015-02-21&tn=MyTable&st=2015-07-01T08%3a49Z&se=2015-07-02T08%3a49Z&sp=u&si=YWJjZGVmZw%3d%3d&sig=jDrr6cna7JPwIaxWfdH0tT5v9dc%3d&spk=Coho%20Winery&epk=Coho%20Winery HTTP/1.1
Host: myaccount.table.core.windows.net
DataServiceVersion: 3.0;NetFx
MaxDataServiceVersion: 3.0;NetFx
If-Match: *
Content-Type: application/atom+xml
Content-Length: 696
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<entry xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="http://www.w3.org/2005/Atom">
<title />
<author>
<name />
</author>
<id>https://myaccount.table.core.windows.net/MyTable(PartitionKey='Coho Winery',RowKey='Seattle')</id>
<content type="application/xml">
<m:properties>
<d:PartitionKey>P</d:PartitionKey>
<d:RowKey>R</d:RowKey>
<d:Timestamp m:type="Edm.DateTime">0001-01-01T00:00:00</d:Timestamp>
</m:properties>
</content>
</entry>
Consulte también
Delegación del acceso con una firma de acceso compartido
Create a service SAS (Creación de una SAS de servicio)