Подключиться к учетной записи хранения Azure, используя только маркер SAS? - PullRequest
0 голосов
/ 19 мая 2018

Есть ли способ подключения к учетной записи или контейнеру хранения только с использованием токена SAS и конечной точки для этой учетной записи хранения?Я уже сделал демо / пример, и он использует строку подключения (которая работает), но я не вижу, как подключиться к моему хранилищу, используя только SAS?Есть ли какой-нибудь пример, как это сделать в Java?

1 Ответ

0 голосов
/ 21 мая 2018

Я генерирую токен SAS для своего конкретного большого двоичного объекта на портале, а затем успешно загружаю его через токен.

enter image description here

sampleкод:

import com.microsoft.azure.storage.blob.CloudBlockBlob;

import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URI;

public class DownloadBlobSAS {

    public static final String blobSasToken = "***";

    public static void main(String[] args) {
        try {
            CloudBlockBlob sasBlob = new CloudBlockBlob(new URI(blobSasToken));

            InputStream input =  sasBlob.openInputStream();
            InputStreamReader inr = new InputStreamReader(input, "UTF-8");
            String utf8str = org.apache.commons.io.IOUtils.toString(inr);
            System.out.println(utf8str);

            System.out.println("print done");

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Результат вывода:

enter image description here

Если вы хотите сгенерировать токен SAS, вам нужно сначала указать строку подключения для доступа к контейнеру или BLOB-объекту.

Затем вы можете использовать метод generateSharedAccessSignature() для создания токена SAS. Можно обратиться к пример кода :

SharedAccessBlobPolicy sp = createSharedAccessPolicy(
                EnumSet.of(SharedAccessBlobPermissions.READ, SharedAccessBlobPermissions.LIST), 300);
        BlobContainerPermissions perms = new BlobContainerPermissions();

        perms.getSharedAccessPolicies().put("readperm", sp);
        this.container.uploadPermissions(perms);
        Thread.sleep(30000);

        CloudBlockBlob sasBlob = new CloudBlockBlob(new URI(this.blob.getUri().toString() + "?"
                + this.blob.generateSharedAccessSignature(null, "readperm")));

Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...