文档

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