文档

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