无权执行 sts:AssumeRoleWithWebIdentity AWS s3 Cognito 身份验证失败

2023-12-11

我有一个简单的 iOS 应用程序,可以上传到 s3。我正在尝试各种 unauth - 尽管理想情况下我想做 Facebook。

2 个 IAM 角色(使用向导创建)。 IAM 身份验证策略(对于 unauth 角色):

{
    "Version": "2012-10-17",
    "Statement": [{
        "Action": [
            "mobileanalytics:PutEvents",
            "cognito-sync:*"
        ],
        "Effect": "Allow",
        "Resource": [
            "*"
        ]
      },
      {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:GetObject",
        "s3:DeleteObject"
      ],
      "Resource": "arn:aws:s3:::[mybucketname]/*"
    }

  ]
}

我的constants.h 文件(已清理):

#define AWSID @"[12 digit num]"
#define PoolID @"us-east-1:[long id number]"
#define CRUnauth @"arn:aws:iam::[id num]:role/Cognito_Auth_DefaultRole"
#define CRAuth @"arn:aws:iam::[id num]:role/Cognito_auth_DefaultRole"

我的 appDelegate.m 文件有以下内容:

credentialsProvider = [AWSCognitoCredentialsProvider credentialsWithRegionType:AWSRegionUSEast1 accountId:AWSID identityPoolId:PoolID unauthRoleArn:CRUnauth authRoleArn:nil];
AWSServiceConfiguration *configuration = [AWSServiceConfiguration configurationWithRegion:AWSRegionSAEast1
                                                                      credentialsProvider:credentialsProvider];
[AWSServiceManager defaultServiceManager].defaultServiceConfiguration = configuration;

我将凭证提供程序设置为一个属性,因为我需要在某个时候添加 Facebook 登录信息。

我只是上传一个捆绑图像来测试这一点。在我的视图控制器中:

 if([app.fb_token length] > 0){
        app.credentialsProvider.logins = @{ @(AWSCognitoLoginProviderKeyFacebook): app.fb_token };
    }
    AWSS3TransferManager *transferManager = [AWSS3TransferManager defaultS3TransferManager];
    UIImage *image = [UIImage imageNamed:@"yayDot"];
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                         NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString* path = [documentsDirectory stringByAppendingPathComponent:
                      @"yayDot.png" ];
    NSData* data = UIImagePNGRepresentation(image);
    [data writeToFile:path atomically:YES];

    AWSS3TransferManagerUploadRequest *uploadRequest = [AWSS3TransferManagerUploadRequest new];
    uploadRequest.body = [NSURL URLWithString:path];
    uploadRequest.key = @"yayDot.png";
    uploadRequest.bucket = thebucket;
    [AWSLogger defaultLogger].logLevel = AWSLogLevelVerbose;

    [[transferManager upload:uploadRequest] continueWithBlock:^id(BFTask *task) {
        // Do something with the response
        NSLog(@"result: %@", task.result);

        return nil;
    }];

完整错误:

AWSURLResponseSerialization.m line:258 | -[AWSXMLResponseSerializer responseObjectForResponse:originalRequest:currentRequest:data:error:] | Response header: [{
    "Content-Length" = 299;
    "Content-Type" = "text/xml";
    Date = "Tue, 27 Jan 2015 18:54:17 GMT";
    "x-amzn-RequestId" = "xxxxx";
}]
2015-01-27 10:54:18.052  AWSiOSSDKv2 [Verbose] AWSURLResponseSerialization.m line:263 | -[AWSXMLResponseSerializer responseObjectForResponse:originalRequest:currentRequest:data:error:] | Response body: [<ErrorResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/">
  <Error>
    <Type>Sender</Type>
    <Code>AccessDenied</Code>
    <Message>Not authorized to perform sts:AssumeRoleWithWebIdentity</Message>
  </Error>
  <RequestId>xxxxx</RequestId>
</ErrorResponse>
]
2015-01-27 10:54:18.059 lookyloo[20024:332664] AWSiOSSDKv2 [Error] AWSCredentialsProvider.m line:587 | __40-[AWSCognitoCredentialsProvider refresh]_block_invoke356 | Unable to refresh. Error is [Error Domain=com.amazonaws.AWSSTSErrorDomain Code=0 "The operation couldn’t be completed. (com.amazonaws.AWSSTSErrorDomain error 0.)" UserInfo=0x7d936310 {Type=Sender, Message=Not authorized to perform sts:AssumeRoleWithWebIdentity, __text=(
    "\n    ",
    "\n    ",
    "\n    ",
    "\n  "
), Code=AccessDenied}]

查看您的代码,您似乎正在使用“Auth”角色arn:aws:iam::[id num]:role/Cognito_Auth_DefaultRole作为你的 unauth 角色。默认情况下,Amazon Cognito 创建仅信任特定类型的访问(未经身份验证和经过身份验证)的角色,因此在尝试未经身份验证的访问时会出现 sts 错误。这篇博文回顾信任策略并了解 Cognito 如何使用它们。

切换到简化的构造函数应该可以解决这个问题,除非您还在 AWS 控制台内进行了相同的关联。通过在控制台中关联您的角色,您可以不必将角色嵌入到应用程序中。

此外,如果您想使用“美国标准”区域之外的存储桶,则需要更改此行:

AWSServiceConfiguration *configuration = [AWSServiceConfiguration configurationWithRegion:AWSRegionSAEast1
                                                                  credentialsProvider:credentialsProvider];

反映桶所在的区域。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无权执行 sts:AssumeRoleWithWebIdentity AWS s3 Cognito 身份验证失败 的相关文章

  • TestFlight Beta 中的消息不可用

    I am seeing Unavailable message in TestFLight Beta App in iOS8 Please find the attached screenshot please tell me how to
  • iOS 无法获取人物图像

    我有两个 tableViewController 第一个有联系人列表 另一张显示详细的人员信息 第一个tableViewController的一段代码 ABAddressBookRef addressBook ABAddressBookCr
  • 从 ios 应用程序到 symfony2 Web 应用程序的登录和管理会话

    我使用 Symfony2 开发了一个 Web 应用程序 我用过FOS用户包用于用户管理和安全 现在 我正在考虑为我的网络开发一个本机 iOS 应用程序 但并不真正知道如何解决从应用程序创建会话的问题 并在整个交互用户应用程序中维护它 换句话
  • 如何从 Xcode 4.5 卸载 iOS 5.0 模拟器

    我已经安装了 Xcode 4 5 由于我编写应用程序是为了好玩 我不打算支持旧版 iOS 版本 并且为了节省 500 GB iMac 上的空间 是否有办法删除它 尝试从 Xcode 包中支持的平台中删除 iPhone iPhoneSimul
  • iOS 何时清理本地应用程序 ./tmp 目录?

    iOS什么时候清理本地应用程序 tmp目录 请注意 这不是一个骗局这个问题 https stackoverflow com questions 3593900 iphone storage in tmp directory 我问的是应用程序
  • 如何将 NSMutableArray 添加到 NSMutableArray Objective-c

    我正在从 Java 切换到 Objective c 但遇到了一些困难 我已经搜索过这个问题但没有取得太大成功 我有一个存储 NSMutableArrays 的 NSMutableArray 如何向数组添加数组 您可以在数组中存储对另一个数组
  • iOS 上关键 ClientState 警告的默认访问速度缓慢

    在测试我的 iOS 应用程序时 我收到 对关键 ClientState 的默认访问速度慢 耗时 0 034635 秒 容差为 0 020000 警告 它似乎是间歇性发生的 我试图环顾四周看看它是关于什么的 但我并不完全确定 任何帮助表示赞赏
  • iPhone 的翻译器?

    我对为 iPhone 制作一个解释器很感兴趣 这将是一个实验性的想法 但可能会很棒 我喜欢让我自 己的语言适合移动计算和数学的想法 我查阅了很多资料 发现有关 iPhone 上的口译员的信息很复杂 苹果会允许什么 我见过这个应用程序 这是一
  • 在 Xcode 中查找未使用的文件

    我最近开始开发一个新应用程序 它基本上是我以前制作的应用程序的副本 但做了一些更改 为了制作这个新应用程序 我复制了旧应用程序并删除了一些不需要的内容 我想知道 有没有办法知道 Xcode 中正在使用哪些类文件 或者有什么关于如何查找未使用
  • Apple 由于崩溃而拒绝了我的应用程序,无法重现它

    我刚刚上传了一个应用程序到应用程序商店 它是为ios 7开发的 他们拒绝了该应用程序 因为我无法重现崩溃 他们向我发送了这份崩溃报告 Exception Type EXC BAD ACCESS SIGSEGV Exception Subty
  • 无法在 xcode 8 beta 6 上编译 AWS CustomIdentityProvider

    我在 iOS 应用程序中使用 Amazon Cognito 和 Facebook 登录 直到 beta 5 为止此代码从这个SO线程 https stackoverflow com questions 37597388 aws cognit
  • 从字典创建 Swift 对象

    如何根据 Swift 字典中的查找值动态实例化类型 希望这对其他人有用 我们需要进行一些研究才能弄清楚这一点 目标是避免巨大的 if 或 switch 语句从值创建每个对象类型的反模式 class NamedItem CustomStrin
  • boto3 资源(例如 DynamoDB.Table)的类型注释

    The boto3库提供了几种返回资源的工厂方法 例如 dynamo boto3 resource dynamodb Table os environ DYNAMODB TABLE 我想注释这些资源 以便我可以获得更好的类型检查和完成 但我
  • 按升序对 NSDictionary 进行排序

    我正在尝试排序NSDictionary按升序排列 我正在使用这段代码 NSDictionary valDict self mGetDataDict key rowKey for NSString valueKey in valDict al
  • iOS绘图3D图形库[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在搜索一个可以帮助我绘制 3D 图表的库 我想要类似的东西这一页 http www math uri edu bkaskosz fla
  • 如何将设备上未保存的图片上传到dropbox帐户?(IOS)

    Dropbox RestClient 仅保存文件 所以我想先将图像保存在本地文件夹中 然后上传它 结果它保存了文件 但它已损坏 NSString localPath NSBundle mainBundle pathForResource I
  • AdMob 和 DFP 广告联盟之间的区别?

    我正在尝试在我的 iOS 应用程序上显示横幅广告和插页式广告 但现在我对广告网络感到困惑 AdMob 与 DFP 有何不同 哪一种更适合投放广告 有人可以提供帮助吗 提前致谢 AdMob 是一个广告网络 作为发布商 您可以通过展示从网络投放
  • 获取所有ios应用程序的全局列表[重复]

    这个问题在这里已经有答案了 我想对苹果应用商店进行一些全球统计 一个瓶颈是至少获取所有当前活动应用程序的 ID 这 9 位数字 有谁知道如何获取 iOS 应用商店中当前活动应用程序的所有 id 的完整列表 更好的是特定类别的所有 ID 例如
  • 带有自定义字体的 UILabel 错误呈现

    在我的 iPhone 应用程序中 我为所有 UILabel 设置了自定义字体 更准确地说 我对 UILabel 进行了子类化 重写了一个方法 在该方法中设置了自定义字体 然后将 IB 中的所有标签设置为该自定义类 现在的问题是 所有文本都渲
  • 具有隐式授权的 OAuth 应用程序中的客户端模拟

    来自 OAuth 草案 隐式section https datatracker ietf org doc html draft ietf oauth v2 31 section 1 3 2 在隐式授权流程期间发出访问令牌时 授权服务器不对客

随机推荐

  • 如何将 javascript 日期转换为特定时区

    我正在获取以毫秒为单位的日期信息 我能够正确解析它 但是当我更改电脑时区时 解析的时间也会更改 我只想到一个特定的时区 EX Time in millisec 1461645900000 Actual Parsed 26 Apr 2016
  • 为什么编译器会拒绝常量默认参数值并显示“E2026 Constant expression Expected”?

    以下代码无法编译 并显示 dcc32 Error TestDefaultParameterValuePrj dpr 13 E2026 需要常量表达式 program TestDefaultParameterValuePrj APPTYPE
  • 如何在TrackerCSRT上使用setInitialMask?

    我在用TrackerCSRT用于视频中的对象跟踪 目前我使用跟踪器上的 init 方法来设置region of interest tracker cv2 TrackerCSRT create tracker init frame regio
  • 如何验证 Google 身份验证 API 访问令牌?

    如何验证 Google 身份验证访问令牌 我需要以某种方式查询谷歌并询问 给定的访问令牌 对 有效吗 电子邮件受保护 谷歌帐号 简洁版本 很清楚如何通过Google 身份验证 Api Web 应用程序的 OAuth 身份验证然后可用于从一系
  • 如何在XCODE中将UIView水平分成三个均匀大小的子视图?

    我必须划分一个UIView使用水平分成三个均匀大小的子视图Xcode 我尝试使用约束 我得到了以下结果 在某些屏幕尺寸下 在小屏幕手机中 最左边和最右边的子视图大小相同 但是 中心子视图在小屏幕中非常小 而在大屏幕中则非常大 所以请让我知道
  • 如何在没有java.util.Timer的情况下实现延迟的未来?

    我正在编写一个简单的函数来返回Future Unit 在给定的延迟后完成 def delayedFuture delay FiniteDuration Future Unit val promise Promise Unit val tim
  • 加载图像时毕加索提示内存不足

    我正在使用 Picasso 从我的服务器加载图像并将其显示在 ImageView 中 我观察到来自用户手机的一些崩溃报告 当 Picasso 尝试将图像加载到 ImageView 时 会发生内存不足异常 堆栈跟踪如下 java lang O
  • 如何调整 PHP 真实路径缓存?

    最近版本的 PHP 有一个文件名缓存 用于了解文件的真实路径 并且require once and include once 可以利用它 您可以在中设置一个值php ini设置缓存的大小 但我不知道如何知道大小应该是多少 默认值是 16k
  • 在输入文本字段中显示背景图像

    我有一个带有背景图像的简单 HTML 页面 现在我在此 HTML 页面上应用联系表单 我想在文本输入字段中显示背景图像 即我想让输入文本字段透明 我已经使用CSS代码background color transparent 但它不起作用 我
  • 来自 Kafka 主题的 PySpark 结构化流的 Cassandra 接收器

    我想使用 PySpark 结构化流 API 将结构流数据写入 Cassandra 我的数据流如下 REST API gt Kafka gt Spark 结构化流 PySpark gt Cassandra 来源和版本如下 火花版本 2 4 3
  • 如何使用 RxDB 处理 JWT 身份验证?

    我有一个本地 RxDB 数据库 我想将它与 CouchDB 连接 除了身份验证之外 一切似乎都工作正常 我不知道如何以不同的方式添加它 然后在数据库网址中插入凭据 database tasks sync remote http userna
  • PySpark 2.1:使用 UDF 导入模块会破坏 Hive 连接

    我目前正在使用 Spark 2 1 并且有一个主脚本 该脚本调用包含我所有转换方法的帮助程序模块 换句话说 main py helper py 在我的顶部helper py文件我有几个自定义 UDF 我按以下方式定义了它们 def refo
  • Android WebViewClient 属性中的“isForMainFrame”请求是什么意思?

    What is isForMainFrame意思是 android 21 请求是否针对主框架 例如 对于 iframe 将为 false 不清楚 因为对于下面的日志 它返回false用于主框架请求 是不是一样isMainFrame在 and
  • 两个 Java 日期之间的天数差异?

    我想获得两个 Java Date 对象之间的差异 我使用过 Joda Time 库 但问题是我得到的天数差异比实际的天数差异更大 这是我的代码片段 DateFormat formatter new SimpleDateFormat mm d
  • 如何从列表框列表项中获取值

    在我的火狐插件中我有一个
  • 将 AM/PM 时间转换为 24 小时格式?

    我需要将 12 小时格式时间 上午 下午 转换为 24 小时格式时间 例如01 00 PM 至 13 00 使用 C 我该如何转换它 如果您需要将字符串转换为日期时间 您可以尝试 DateTime dt DateTime Parse 01
  • 如何从 Swift 打开邮件应用程序

    我正在开发一个简单的快速应用程序 用户输入电子邮件地址并按下打开邮件应用程序的按钮 并在地址栏中输入输入的地址 我知道如何在 Objective C 中执行此操作 但在 Swift 中无法使其工作 您可以使用简单的 mailto iOS 中
  • 嵌入 Maven 3

    除了 m2eclipse 源之外 是否有关于该主题的任何类型的文档 谢谢 杰巴鲁克 据我所知 文档Maven 嵌入器仍有待创建 是的 Maven 3 0 xJason 创建的页面确实提到了旧文档的链接 但 Jason 后来在MNG 3658
  • 为什么我可以在“res.send”之后执行代码?

    我想知道以下代码行为背后的机制是什么 res send 200 data test data console log still here 我的理解是res send不return该功能 但确实关闭连接 结束请求 这可以解释为什么我仍然可以
  • 无权执行 sts:AssumeRoleWithWebIdentity AWS s3 Cognito 身份验证失败

    我有一个简单的 iOS 应用程序 可以上传到 s3 我正在尝试各种 unauth 尽管理想情况下我想做 Facebook 2 个 IAM 角色 使用向导创建 IAM 身份验证策略 对于 unauth 角色 Version 2012 10 1