文档

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