Exportar (0) Imprimir
Expandir Tudo

Autenticando o acesso à sua conta de armazenamento do Windows Azure

Atualizado: fevereiro de 2014

Toda solicitação que você faz aos serviços de armazenamento do Windows Azure deve ser autenticada, a menos que seja uma solicitação anônima em um contêiner público ou em seus blobs. As bibliotecas gerenciadas do Windows Azure simplificam esse processo de autenticação para você. Há dois modos de autenticar uma solicitação em relação aos serviços de armazenamento:

  • Usando o esquema de autenticação Chave Compartilhada ou Lite de Chave Compartilhada para recursos nos serviços Blob, Fila e Tabela. Estes esquemas de autenticação usam um HMAC computado com o algoritmo de SHA-256 e codificado como Base64. O HMAC é construído de um conjunto de campos relacionado à solicitação. Para obter detalhes sobre o protocolo, consulte Autenticação federada para os Serviços de Armazenamento do Windows Azure.

  • Criando uma assinatura de acesso compartilhado. Uma assinatura de acesso compartilhado incorpora as credenciais necessárias para autenticação no URI de forma segura, junto com o endereço do recurso que é acessado. Como a assinatura de acesso compartilhado inclui todos os dados necessários para autenticação no URI, ela pode ser usada para conceder acesso controlado a um recurso no serviço Blob, Fila ou Tabela, e pode ser distribuída sem considerar seu código. Para obter detalhes sobre o protocolo, consulte Delegando acesso com uma assinatura de acesso compartilhado (API REST).

Conforme observado acima, você pode especificar que um contêiner deve ser público; no caso, todas as operações de leitura no contêiner e em qualquer blob dentro dele estão disponíveis para acesso anônimo. Uma solicitação anônima não precisa ser autenticada; portanto, um usuário pode executar a operação sem fornecer credenciais da conta. Consulte Restringir o acesso a contêineres e blobs para obter detalhes sobre como gerenciar o contêiner e o acesso de blob.

A biblioteca gerenciada do Windows Azure .NET fornece algumas classes de chave para autenticar o acesso à sua conta de armazenamento:

  • A classe CloudStorageAccount representa sua conta de armazenamento do Windows Azure.

  • A classe StorageCredentials armazena dois tipos diferentes de credenciais que podem ser usadas para autenticar uma solicitação: um nome de conta de armazenamento e uma chave de acesso, que pode ser usada para autenticar solicitações por meio de esquemas de autenticação Shared Key e Shared Key Lite ou uma assinatura de acesso compartilhado.

  • As classes CloudBlobClient, CloudQueueCliente CloudTableClient oferecem um ponto de entrada para a hierarquia de recursos dos serviços Blob, Fila e Tabela, respectivamente. Em outras palavras, para trabalhar com contêineres e blobs, você criará um objeto CloudBlobClient; para trabalhar com filas e mensagens, criará um CloudQueueClient; para trabalhar com tabelas e entidades, criará um CloudTableClient. O objeto cliente pode ser criado diretamente. Basta fornecer o ponto de extremidade de serviço e um conjunto de credenciais. Ele também pode ser criado a partir de um objeto CloudStorageAccount. Basta chamar um dos métodos CreateCloudBlobClient, CreateCloudQueueClient ou CreateCloudTableClient. Esses métodos permitem que você retorne a um objeto cliente para um ou mais serviços em um objeto CloudStorageAccount definido com um único conjunto de credenciais.

    Observe que, para acessar um contêiner ou blob anonimamente, você não precisa criar um CloudStorageAccount ou um objeto cliente. A autenticação não é requerida para o acesso anônimo; então, você pode acessar o recurso diretamente. Só são suportadas certas operações de leitura (usando HTTP GET) por acesso anônimo.

Você pode usar a propriedade CloudStorageAccount.DevelopmentStorageAccount para retornar um objeto CloudStorageAccount que faz referência a conta conhecida do emulador de armazenamento.

Esta propriedade é útil quando você está escrevendo código que usará apenas o emulador de armazenamento. Mas se você desejar apontar seu código para uma conta de armazenamento do Windows Azure quando concluir os testes no emulador de armazenamento, talvez queira usar uma cadeia de conexão. Você pode modificar a cadeia de conexão rapidamente para alternar entre contas de armazenamento sem modificar seu código; consulte Configurando cadeias de conexão do Windows Azure para obter mais informações.

O modo mais simples de acessar uma conta de armazenamento do Windows Azure a partir de seu código é criar um novo objeto CloudStorageAccount fornecendo seu nome de conta de armazenamento e a tecla de acesso sob a forma de um objeto StorageCredentials e indicando se a conta deve ser acessada usando HTTP ou HTTPS. Solicitações feitas por este CloudStorageAccount ou um de seus objetos derivados usarão estas credenciais para autenticação.

Este objeto CloudStorageAccount usa os pontos de extremidade padrão para os serviços de armazenamento. Os pontos de extremidade de serviço padrão são myaccount.blob.core.windows.net, myaccount.queue.core.windows.net e myaccount.table.core.windows.net, onde myaccount é o nome de sua conta de armazenamento.

O exemplo de código a seguir mostra como criar um novo objeto CloudStorageAccount que usa uma referência a seu nome de conta e a tecla de acesso. Depois ele cria um novo objeto CloudBlobClient, seguido de um novo contêiner:


// Account name and key.  Modify for your account.
string accountName = "myaccount";
string accountKey = "SzlFqgzqhfdk594cFoveYqCyvl8v9EESAnOLcTCeBIo31p46rJJRZx/5vU/oY3ZsK/VdFNaVpm6G8YSD2K48Nw==";

//Get a reference to the storage account, with authentication credentials
StorageCredentials credentials = new StorageCredentials(accountName, accountKey);
CloudStorageAccount storageAccount = new CloudStorageAccount(credentials, true);

//Create a new client object.
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();

// Retrieve a reference to a container. 
CloudBlobContainer container = blobClient.GetContainerReference("mycontainer");

// Create the container if it does not already exist.
container.CreateIfNotExists();

// Output container URI to debug window.
System.Diagnostics.Debug.WriteLine(container.Uri);

Você também pode acessar uma conta de armazenamento especificando explicitamente os pontos de extremidade de serviço. Esta abordagem é útil em dois cenários:

  • Quando você está acessando uma conta de armazenamento por uma assinatura de acesso compartilhado.

  • Quando você configurou um domínio personalizado para sua conta de armazenamento e deseja usar esses pontos de extremidade personalizados para acessar a conta. Observe que os pontos de extremidade padrão continuam disponíveis, além de seus pontos de extremidade personalizados.

Uma assinatura de acesso compartilhado é um meio de fornecer acesso controlado aos recursos de sua conta de armazenamento para outros clientes. A assinatura de acesso compartilhado incorpora informações sobre o recurso a ser acessado, as permissões a serem concedidas, o intervalo no qual o recurso estará disponível e a política de acesso no contêiner, caso exista. Para fins de autenticação, estas informações são encapsuladas dentro um cadeia-para-assinar que é codificada como UTF-8 e uma assinatura com o algoritmo HMAC-SHA256 é construída. A parte de formulários de assinatura de um token que clientes podem usar para acessar seu recurso. Por exemplo, um cliente pode usar uma assinatura de acesso compartilhado para criar ou excluir um blob em sua conta de armazenamento, operações às quais eles não teriam acesso se o contêiner fosse marcado apenas como público. Para obter mais informações sobre assinaturas de acesso compartilhado, consulte Delegando acesso com uma assinatura de acesso compartilhado (API REST).

Consulte também

A Microsoft está realizando uma pesquisa online para saber sua opinião sobre o site do MSDN. Se você optar por participar, a pesquisa online lhe será apresentada quando você sair do site do MSDN.

Deseja participar?
Mostrar:
© 2014 Microsoft