文档

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 使用指定的令牌向配置的身份插件 URL 发出 POST 调用以发送到 STS API。

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

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

    用户

    请求的凭据的拥有者

    maxValiditySeconds

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

    声明

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

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

如果身份管理器拒绝身份验证请求或遇到其他错误,响应 *必须* 返回一个带有 application/json 内容类型的 403 FORBIDDEN HTTP 状态代码,并包含以下结构的正文。

{
     "reason": "<string>"
}

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

创建与声明匹配的策略

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