文档

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 命令创建与一个或多个声明值匹配的策略。