如何在发送给 MinIO 的 REST 请求中进行身份验证

And*_*eas 6 minio

我正在尝试使用 MinIO。我尝试将 REST API 调用直接发送到 MinIO 端口 9000。到目前为止,我了解到身份验证的工作方式与 Amazon S3 API 身份验证的工作方式相同 - 对吗?不幸的是,我也是 S3 的新手。

这是我的问题:

  • MinIO 的请求标头是什么样的?
  • 我读到我还需要一个需要以某种方式计算的签名。这个计算是如何进行的?

我在 Windows 10 上进行实验并在 Docker 容器中运行 MinIO。我的实验目标是“ http://localhost:9000/

到目前为止,我只收到 GET 请求的 403 错误:

<?xml version="1.0" encoding="UTF-8"?>
<Error>
    <Code>AccessDenied</Code>
    <Message>Access Denied.</Message>
    <Resource>/</Resource>
    <RequestId>173BACCB19FAF4C4</RequestId>
    <HostId>d200d104-da55-44e2-a94d-ce68ee959272</HostId>
</Error>
Run Code Online (Sandbox Code Playgroud)

我通读了 S3 Api 参考“https://docs.aws.amazon.com/pdfs/AmazonS3/latest/API/s3-api.pdf#Type_API_Reference”,但说实话,我迷路了。

有人可以帮我吗?

Ben*_*Vue 14

您需要设置身份验证值。

网址

GET http://localhost:9099/{bucket name}/{file name}
Run Code Online (Sandbox Code Playgroud)

选择Authorization选项卡

选择类型AWS Signature

访问密钥:从 minio UI 复制

密钥:从 minio UI 复制

服务名称:s3

邮递员访问

邮差

迷你浏览器

迷你浏览器

创建密钥

创建密钥

访问密钥/秘密密钥

在此输入图像描述

本地 docker 撰写文件

另存为docker-compose.yml

version: "3"

services:
  minio-service:
    image: minio/minio:latest
    volumes:
      - ./storage/minio:/data
    ports:
      - "9000:9000"
      - "9099:9099"
    environment:
      MINIO_ROOT_USER: admin
      MINIO_ROOT_PASSWORD: admin-strong
    command: server --address ":9099" --console-address ":9000" /data
    restart: always # necessary since it's failing to start sometimes
Run Code Online (Sandbox Code Playgroud)

发射容器

$ docker compose up
Run Code Online (Sandbox Code Playgroud)

网址

http://localhost:9000/
Run Code Online (Sandbox Code Playgroud)

机密已匹配docker-compose.yml

user name : admin
password: admin-strong
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

卷曲访问

curl --location 'http://localhost:9000/api/v1/login' \
--silent \
--header 'Content-Type: application/json' \
--cookie-jar cookies.txt \
--data '{"accessKey":"admin","secretKey":"admin-strong"}
Run Code Online (Sandbox Code Playgroud)

cookies.txt:通过curl 保存登录命令的cookie 文件它将保存下一次curl API 调用的访问令牌。

demo这个curl示例使用cookie获取bucket的内容。

curl --cookie cookies.txt --silent --location 'http://localhost:9000/api/v1/buckets/demo/objects?with_versions=true' | json_pp
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

详细信息在这里