调用 AssumeRoleWithWebIdentity 操作时发生错误 (InvalidIdentityToken):提供的令牌不是使用 Amazon 令牌登录

7hi*_*lls 5 openid-connect assume-role sts

我使用中国地区的curl命令向sts AssumeRoleWithWebIdentity发送POST请求以获取OIDC(OpenID Connect)的access_key、secret_key和令牌,该命令返回以下错误。

调用 AssumeRoleWithWebIdentity 操作时发生错误 (InvalidIdentityToken):提供的令牌不是使用 Amazon 登录令牌。

curl -v -X POST 'https://sts.cn-northwest-1.amazonaws.com.cn/?Action=AssumeRoleWithWebIdentity&DurationSeconds=3600&RoleSessionName=app1&RoleArn=<ROLE_ARN>&WebIdentityToken=<TOKEN>&Version=2011-06-15&&ProviderId=www.amazon.com'
Run Code Online (Sandbox Code Playgroud)

7hi*_*lls 4

花了几天时间后,我发现它无需 ProviderId 即可工作。curl URL 在没有 ProviderID 的情况下工作,仅在 OAuth2.0 访问令牌不适用于 OPenID Connect 的情况下才应包含 ProvideId。

Aws 文档:AssumeRoleWithWebIdentity 提供程序 所提供的 Web 身份令牌的颁发机构。对于 OpenID Connect ID 令牌,这包含 iss 字段的值。对于 OAuth 2.0 访问令牌,这包含在 AssumeRoleWithWebIdentity 请求中传递的 ProviderId 参数的值。

curl -v -X POST 'https://sts.cn-northwest-1.amazonaws.com.cn/?Action=AssumeRoleWithWebIdentity&DurationSeconds=3600&RoleSessionName=app1&RoleArn=<ROLE_ARN>&WebIdentityToken=<TOKEN>&Version=2011-06-15&'
Run Code Online (Sandbox Code Playgroud)