AssumeRoleWithWebIdentity
MinIO Security Token Service (STS) AssumeRoleWithWebIdentity API
端点使用由
已配置的 OpenID Identity Provider (IDP)
返回的 JSON Web Token (JWT) 生成临时访问凭证。本文档说明 MinIO
服务器的 AssumeRoleWithWebIdentity 端点。关于如何使用 S3 兼容 SDK
实现 STS,请参阅对应 SDK 的文档。
MinIO STS AssumeRoleWithWebIdentity API 端点参考了
AWS AssumeRoleWithWebIdentity
端点,并共享部分请求/响应元素。本文档说明 MinIO 特有语法,并链接到 AWS 参考文档以获取
所有共享元素的说明。
请求端点
AssumeRoleWithWebIdentity 端点格式如下:
POST https://minio.example.net?Action=AssumeRoleWithWebIdentity[&ARGS]
以下示例使用了所有受支持参数。请将
minio.example.net 主机名替换为你的 MinIO
集群对应 URL:
POST https://minio.example.net?Action=AssumeRoleWithWebIdentity
&WebIdentityToken=TOKEN
&Version=2011-06-15
&DurationSeconds=86000
&Policy={}
请求查询参数
该端点支持以下查询参数:
参数 |
类型 |
说明 |
|---|---|---|
|
string |
必填 指定由 已配置的 OpenID Identity Provider 返回的 JSON Web Token (JWT)。 |
|
string |
必填 指定 |
|
integer |
可选 指定临时凭证过期前的秒数。
默认为
如果省略 |
|
string |
可选 指定 URL 编码、JSON 格式的 policy, 作为内联会话策略使用。
临时凭证的最终权限是 JWT claim 中指定策略与所给内联策略的交集。应用只能执行那些已被显式授权的操作。 内联策略可以指定 JWT claim 策略所允许权限的子集。 应用绝不会获得超出 JWT claim 策略所指定范围的权限。 省略该参数则仅使用 JWT claim 策略。 有关 MinIO 认证与授权的更多信息,请参见 Access Management。 |
|
string |
可选 用于所有用户认证请求的角色 Amazon Resource Number (ARN)。
如果使用该参数,必须通过 使用时,所有有效的授权请求都会假定同一组由 RolePolicy 提供的权限。 你可以使用 OpenID Policy Variables 创建策略, 以编程方式管理每个用户可访问的内容。 如果未提供 RoleArn,MinIO 会尝试通过基于 JWT 的 claim 进行授权。 |
响应元素
该 API 端点的 XML 响应与 AWS
AssumeRoleWithWebIdentity response
类似。具体而言,MinIO 返回 AssumeRoleWithWebIdentityResult 对象,
其中 AssumedRoleUser.Credentials 对象包含 MinIO 生成的临时
凭证:
AccessKeyId- 应用用于认证的访问密钥。SecretKeyId- 应用用于认证的秘密密钥。Expiration- 凭证过期的 RFC3339 日期和时间。SessionToken- 应用用于认证的会话 token。某些 SDK 在使用临时凭证时可能需要此字段。
以下示例与 MinIO STS
AssumeRoleWithWebIdentity 端点返回的响应类似:
<?xml version="1.0" encoding="UTF-8"?>
<AssumeRoleWithWebIdentityResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/">
<AssumeRoleWithWebIdentityResult>
<AssumedRoleUser>
<Arn/>
<AssumeRoleId/>
</AssumedRoleUser>
<Credentials>
<AccessKeyId>Y4RJU1RNFGK48LGO9I2S</AccessKeyId>
<SecretAccessKey>sYLRKS1Z7hSjluf6gEbb9066hnx315wHTiACPAjg</SecretAccessKey>
<Expiration>2019-08-08T20:26:12Z</Expiration>
<SessionToken>eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJhY2Nlc3NLZXkiOiJZNFJKVTFSTkZHSzQ4TEdPOUkyUyIsImF1ZCI6IlBvRWdYUDZ1Vk80NUlzRU5SbmdEWGo1QXU1WWEiLCJhenAiOiJQb0VnWFA2dVZPNDVJc0VOUm5nRFhqNUF1NVlhIiwiZXhwIjoxNTQxODExMDcxLCJpYXQiOjE1NDE4MDc0NzEsImlzcyI6Imh0dHBzOi8vbG9jYWxob3N0Ojk0NDMvb2F1dGgyL3Rva2VuIiwianRpIjoiYTBiMjc2MjktZWUxYS00M2JmLTg3MzktZjMzNzRhNGNkYmMwIn0.ewHqKVFTaP-j_kgZrcOEKroNUjk10GEp8bqQjxBbYVovV0nHO985VnRESFbcT6XMDDKHZiWqN2vi_ETX_u3Q-w</SessionToken>
</Credentials>
</AssumeRoleWithWebIdentityResult>
<ResponseMetadata/>
</AssumeRoleWithWebIdentityResponse>
错误元素
该 API 端点的 XML 错误响应与 AWS AssumeRoleWithWebIdentity response 类似。