文档

MinIO 外部身份管理插件

概述

MinIO 身份管理插件提供一个 REST 接口,用于通过 Webhook 服务将身份验证卸载到外部身份管理器。

启用后,客户端应用程序使用 AssumeRoleWithCustomToken STS API 扩展生成 MinIO 的访问令牌。MinIO 通过向配置的插件端点发出 POST 请求来验证此令牌,并使用返回的响应来确定客户端的身份验证状态。

配置设置

您可以使用以下环境变量或配置设置配置 MinIO 身份管理插件

将以下 环境变量 指定到部署中的每个 MinIO 服务器

MINIO_IDENTITY_PLUGIN_URL="https://external-auth.example.net:8080/auth"
MINIO_IDENTITY_PLUGIN_ROLE_POLICY="consoleAdmin"

# All other envvars are optional
MINIO_IDENTITY_PLUGIN_TOKEN="Bearer TOKEN"
MINIO_IDENTITY_PLUGIN_ROLE_ID="external-auth-provider"
MINIO_IDENTITY_PLUGIN_COMMENT="External Identity Management using PROVIDER"

使用 mc admin config set 命令设置以下配置设置

mc admin config set identity_plugin \
   url="https://external-auth.example.net:8080/auth" \
   role_policy="consoleAdmin" \

   # All other config settings are optional
   token="Bearer TOKEN" \
   role_id="external-auth-provider" \
   comment="External Identity Management using PROVIDER"

身份验证和授权流程

应用程序的登录流程如下

  1. 使用 AssumeRoleWithCustomToken API 发出 POST 请求。

    该请求包含一个令牌,该令牌由配置的外部身份管理器用于验证客户端。

  2. MinIO 使用指定给 STS API 的令牌向配置的身份插件 URL 发出 POST 调用。

  3. 在成功身份验证后,身份管理器返回一个 200 OK 响应,其 application/json 内容类型和主体具有以下结构

    {
       "user": "<string>",
       "maxValiditySeconds": 3600,
       "claims": "KEY=VALUE,[KEY=VALUE,...]"
    }
    

    用户

    请求凭据的所有者

    maxValiditySeconds

    返回凭据的最大允许过期时间

    声明

    与请求的凭据关联的键值对声明列表。MinIO 保留并忽略 expparentsub 声明对象(如果存在)。

  4. MinIO 返回对 STS API 请求的响应,其中包含用于进行身份验证请求的临时凭据。

如果身份管理器拒绝身份验证请求或遇到错误,响应 _必须_ 返回一个 403 FORBIDDEN HTTP 状态代码,其 application/json 内容类型和主体具有以下结构

{
     "reason": "<string>"
}

"reason" 字段应包含 403 的原因。

创建匹配声明的策略

使用 MinIO 控制台 _或_ mc admin policy 命令创建匹配一个或多个声明值的策略。