栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

minio实现STS签名服务

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

minio实现STS签名服务

1、背景

        在上一篇中:Docker部署Minio并与Springboot的集成_木星mx的博客-CSDN博客

        我们介绍了如何部署minio和与springboot的集成方法,但是在上传文件时,采用的是从浏览器获取参数读取本地文件上传,当项目部署到线上时,用户和项目服务处于不同机器上,这种方式就不适用了,因此需要进行升级。

        升级后的效果是:项目服务只提供签名服务,用户通过访问项目提供的接口获取签名,然后用户使用签名上传文件,实现了用户到oss端对端的文件传输

 2、实践         1、工具准备

          (1)sts授权工具aws

                minio本身不具备sts签名服务,因此需要第三方服务提供,我们选择aws提供的sts授权

                服务,因此必须先安装aws应用:

//下载安装包

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64-2.0.30.zip" -o "awscliv2.zip"

//解压文件

unzip awscliv2.zip

//安装,root用户sudo可以去掉

sudo ./aws/install

         (2)minio客户端mc

                aws提供的授权服务必须绑定到minio服务上,因此需要一个minio客户端,它可以以命令

                的方式操作minio服务

//在当前目录下载mc

wget https://dl.min.io/client/mc/release/linux-amd64/mc

//设置为可执行

chmod +x mc

//在本目录执行mc命令,查看mc提供的操作命令

./mc --help
        2、为minio(oss)服务绑定sts授权服务

                1、给mc绑定minio服务

                     要让mc控制minio服务,首先得为mc配置minio服务的地址,需要提供:

                     minio的ip和端口号,minio的用户名和密码,local表示配置本地服务

./mc config host add local http://127.0.0.1:9000 username password

                    配置完成之后可以在~/.mc/config.json中查看,local配置好了本地的minio服务

                 

             2、使用mc命令为刚刚配置的minio服务绑定访问策略

                    (1)首先需要创建一个json文件,名字可以随便起,键入以下内容

                        Version是版本号,Action里是允许使用s3接口的删除、获取上传对象功能

                        Resource是访问控制,*表示可以访问minio服务的所有bucket,若想限制访问

                        名为test的bucket可替换成"arn:aws:s3:::test System.out.println(provider.fetch().sessionToken()); System.out.println(provider.fetch().accessKey()); System.out.println(provider.fetch().secretKey()); System.out.println(provider.fetch().isExpired()); //使用签名获取mc对象 MinioClient minioClient = MinioClient.builder() .endpoint(ENDPOINT) .credentialsProvider(provider) .build(); String filename = "任务(1).docx"; try { //对象流,获取文件 BufferedInputStream bis = new BufferedInputStream(new FileInputStream("C:\Users\Administrator\Desktop\" + filename)); //使用mc对象上传文件 minioClient.putObject(PutObjectArgs.builder() //桶名和aws服务端点 .bucket(BUCKET).region(REGION) //前缀和对象名 .object("mx/" + filename) .stream(bis, bis.available(), -1) .build()); System.out.println("文件上传成功!!"); } catch (ErrorResponseException e) { e.printStackTrace(); } catch (InsufficientDataException e) { e.printStackTrace(); } catch (InternalException e) { e.printStackTrace(); } catch (InvalidKeyException e) { e.printStackTrace(); } catch (InvalidResponseException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (ServerException e) { e.printStackTrace(); } catch (XmlParserException e) { e.printStackTrace(); } } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } } }

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/703903.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号