1 | initial version |
To create a SAS (Shared Access Signature) token for Azure Storage in Java to be used by a client, you can use the Azure Storage SDK for Java. Here are the steps to follow:
pom.xml
file:<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-storage-blob</artifactId>
<version>12.11.0</version>
</dependency>
import com.azure.storage.blob.BlobServiceClientBuilder;
import com.azure.storage.blob.models.BlobSASPermission;
import com.azure.storage.blob.models.BlobSASQueryParameters;
import com.azure.storage.blob.models.UserDelegationKey;
import com.azure.storage.common.StorageSharedKeyCredential;
import java.time.OffsetDateTime;
StorageSharedKeyCredential
object by providing your storage account name and account key:StorageSharedKeyCredential credential = new StorageSharedKeyCredential("<your-storage-account>", "<your-storage-account-key>");
BlobServiceClientBuilder
to create a BlobServiceClient
object:BlobServiceClientBuilder builder = new BlobServiceClientBuilder();
BlobServiceClient client = builder
.endpoint("https://<your-storage-account>.blob.core.windows.net")
.credential(credential)
.buildClient();
getUserDelegationKey
method of the BlobServiceClient
object:OffsetDateTime startTime = OffsetDateTime.now();
OffsetDateTime expiryTime = startTime.plusMinutes(10);
UserDelegationKey key = client.getUserDelegationKey(startTime, expiryTime);
BlobSASQueryParameters
object by providing the required parameters:BlobSASPermission permissions = new BlobSASPermission().setReadPermission(true).setListPermission(true);
OffsetDateTime startTime = OffsetDateTime.now();
OffsetDateTime expiryTime = startTime.plusMinutes(10);
BlobSASQueryParameters params = new BlobSASQueryParameters(
expiryTime,
permissions)
.setStartTime(startTime)
.setContentDisposition("attachment; filename=myfile.txt")
.setContentEncoding("gzip")
.setContentLanguage("en-US")
.setContentType("text/plain")
.setVersion("2018-11-09")
.setProtocol("https")
.setUserDelegationKey(key); // use if you generated a user delegation key
encode
method of the BlobSASQueryParameters
object:String sasToken = params.encode();
That's it! You can now use the sasToken
string to authenticate your client when accessing your Azure Storage account.