java azure blobs sas_微软Azure云存储快速开发

快速入门:使用 Java 存储 SDK V10 上传、下载和列出 Blob

本快速入门介绍如何使用新的 Java 存储 SDK 上传、下载和列出 Azure Blob 存储的容器中的块 Blob。 新的 Java SDK 将响应式编程模型与 RxJava 配合使用,提供异步操作。 详细了解 RxJava 的 Java VM 响应式扩展。

先决条件

若要访问 Azure 存储,需要一个 Azure 订阅。 如果还没有订阅,则请在开始前创建一个免费帐户。

对 Azure 存储进行的所有访问都要通过存储帐户完成。 如果还没有存储帐户,可使用 Azure 门户轻松创建一个。 也可以使用 Azure PowerShell 或 Azure CLI 创建存储帐户。 有关如何创建帐户的帮助,请参阅创建存储帐户。

请确保已安装下述额外的必备组件:

可以通过命令行使用的 Maven,或者任何首选的 Java 集成开发环境。

JDK

下载示例应用程序

本快速入门中使用的示例应用程序是基本的控制台应用程序。

使用 git 可将应用程序的副本下载到开发环境。

git clone https://github.com/Azure-Samples/storage-blobs-java-v10-quickstart.git

此命令会将存储库克隆到本地 git 文件夹。

项目导入完以后,请打开位于 src/main/java/quickstart 中的 Quickstart.java。

该demo里面包含了增删改查的所有方法,也是比较全面的,看官方文档就可以实现,接下来就SAS令牌的获取讲几句我遇到的坑;

由于我没有门户的账号和密码,所有有诸多不便,如果有门户账号的勿鄙视,下面介绍一下获取account SAS我的实现;

1、字符串拼接

String stringToSign = accountName +"\n"

+ sp + "\n"

+ ss + "\n"

+ srt+ "\n"

+ st + "\n"

+ se + "\n"

+ si + "\n"

+ spr +"\n"

+ sv + "\n"

注意点,固定格式,一个都不能少,就算传入参数为空,也要按这个格式拼接;

2、签名加密,组成sasToken

String signature = getHMAC256(accountKey, stringToSign);

sasToken = "sp="+sp+"&ss="+ss+"&srt="+srt+"&st="+st+"&se="+ se+"&spr="+spr+"&sv="+sv +"&sig=" +

URLEncoder.encode(signature, "UTF-8");

3、拼接成请求字符串

resultToken = "BlobEndpoint="+containerUrl+"/;"+"SharedAccessSignature="+sasToken+";";

public String getHMAC256(String key, String input) {

Mac sha256_HMAC = null;

String hash = null;

try {

sha256_HMAC = Mac.getInstance("HmacSHA256");

sha256_HMAC.init(new SecretKeySpec(Base64.getDecoder().decode(key), "HmacSHA256"));

byte[] utf8Bytes = input.getBytes("UTF-8");

hash = Base64.getEncoder().encodeToString(sha256_HMAC.doFinal(utf8Bytes));

} catch (InvalidKeyException e) {

e.printStackTrace();

} catch (NoSuchAlgorithmException e) {

e.printStackTrace();

} catch (IllegalStateException e) {

e.printStackTrace();

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

return hash;

}

如果出现SAS不可用的现象,基本就是签名连接字符串和签名算法这两点问题的原因;

参考文件:

https://docs.microsoft.com/zh-cn/azure/storage/blobs/storage-quickstart-blobs-java-v10

参考文章:

https://docs.microsoft.com/en-us/rest/api/storageservices/Authentication-for-the-Azure-Storage-Services

https://docs.microsoft.com/en-us/azure/storage/storage-dotnet-shared-access-signature-part-1

https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-sas

https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-security

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值