从 SDK 版本 1 升级到 3 后,如何修复 getFederationToken 返回 403 未授权错误

查德·格里斯比

我们有使用 AWS PHP SDK 版本 1 AmazonSTS()->get_federation_token() 的现有代码。升级到 SDK 版本 3 后,使用相同凭据、资源和策略的相同调用将返回 403 未授权错误。

版本和地区似乎相同。政策 json 是相同的。用于进行调用的用户凭据是相同的(如果我切换回 SDK v1,它们仍然有效)。我设置了调试选项,但它似乎没有提供任何其他信息,说明为什么同一用户未被授权对同一联合用户执行相同的功能 getFederationToken。

有效的旧代码:

    $client = new AmazonSTS();
    $policy = new stdClass();
    $policy->Statement = [
        'Sid' => 'randomstatementid' . time(),
        'Action' => ['s3:*'],
        'Effect' => 'Allow',
        'Resource' => 'aws:s3:::' . $AWS_BUCKET . '*'
    ];

    // Fetch the session credentials.
    $response = $client->get_federation_token('User1',array(
        'Policy' => json_encode($policy),
        'DurationSeconds' => $NUMSECS
    ));

返回 403 错误的新代码:

    $client = new Aws\Sts\StsClient([
        'region' => 'us-east-1',
        'version' => '2011-06-15',
    ]);
    $policy = new stdClass();
    $policy->Statement = [
        'Sid' => 'randomstatementid' . time(),
        'Action' => ['s3:*'],
        'Effect' => 'Allow',
        'Resource' => 'aws:s3:::' . $AWS_BUCKET . '*'
    ];
    try {
        $response = $client->getFederationToken([
            'Name' => 'User1',
            'Policy' => json_encode($policy),
            'DurationSeconds' => $NUMSECS,
        ]);
    } catch (Exception $e) {
        var_dump($e);
        die();
    }

第一个示例返回联合用户 User1 的临时凭证。第二个示例返回 403 forbidden 错误(我隐藏了实际帐户 ID):

<Error>
    <Type>Sender</Type>
    <Code>AccessDenied</Code>
    <Message>User: arn:aws:iam::[account id]:user/portal is not authorized to perform: sts:GetFederationToken on resource: arn:aws:sts::[account id]:federated-user/User1</Message>
</Error>
查德·格里斯比

原来我正在查看错误的凭据。我在脚本中找到了硬编码的正确凭据:(

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

升级到版本2.3.2后,为什么spring数据redis findById在Optional中返回空值

错误:请将您的依赖项升级到core-js @ 3的实际版本

升级到最新的SDK版本1.20.4后,运行/调试Flutter应用程序非常慢

升级到Spring Security 4.0.0后出现403错误

从版本3升级到版本4后,tinyMCE无法再拖放图像

升级到新版本后,初始屏幕未更改

错误TS2304:内部版本:升级到Angular 4后找不到名称“ Iterable”

将docker-compose升级到版本3

将Gradle升级到版本4后出现构建错误

Elasticsearch-从6.7升级到7.0后,此搜索未返回正确的结果

升级到服务结构的版本3时丢失了CreateServiceRemotingListener

将targetSdkVersion从版本25升级到27时,如何解决错误?

如何在GCP Apache Spark Dataproc Cluster上将Apache Hive升级到版本3

教义迁移捆绑包:升级到版本3后更新错误

SSMS-升级到新版本后出现组装错误

升级到Rails 6.1后扩展视图以生成PDF返回错误

自动将舵图文件升级到版本3

在Eclipse中升级到最新的android SDK和ADT后出现奇怪的错误

升级到php5.5后出现403错误

如何升级到最新的GNOME版本?

升级到CodeIgniter 3后,“ SQL语法错误”

升级到Neo4J 2.2.4后尝试连接时出现403错误

将mysql升级到版本8后出现Connector / J错误

升级到 Apache Cayenne 4.0 的 Milestone 5 版本后出现错误

Android AWS S3 - 将 sdk 版本从“2.2.+”升级到“2.6.7”后对象“不存在”

升级到 LunarG SDK 1.0.68.0 后 InterlockedMax 出现 SPIR-V 错误

将 RxPy 从 1.x 升级到 3.x 后订阅不起作用

升级到最新的 Flutter Stable 版本后,CachedNetworkImage 抛出错误

Flutter,Android,如何升级到 Billing Library 版本 3?