gpt4 book ai didi

objective-c - 使用 Objective-C/Cocoa 的 AWS 身份验证

转载 作者:太空狗 更新时间:2023-10-30 03:41:33 24 4
gpt4 key购买 nike

好吧,这让我抓狂。

我正在尝试创建一个简单的 AWS S3 客户端,允许与 S3 进行基本交互,但似乎我做错了什么,无法弄清楚它是什么。这可能是显而易见的,但我没有看到。

我的 key 是正确的并且已经过测试 - 没有尾随空格等。

问题似乎与签名有关,它不断收到“我们计算的请求签名与您提供的签名不匹配。从 Amazon 的 REST API 检查您的 key 和签名方法错误。我创建了各种类别来添加 base64、HMAC SHA1 生成功能,我还查看了各种在线示例,但到目前为止没有成功。

不使用 Amazon 提供的库的原因是因为它是针对 Cocoa Touch 的,我不想为了让它在 Cocoa 上工作而到处乱搞。

您可以在此处获取所有文件/代码的副本:https://www.dropbox.com/s/8ts9q71dz3uopxp/S3Lite.zip

然而,我正在关注亚马逊关于身份验证的文档,并且以我简单的想法,一切都在正确地完成。

这是我生成签名的方式:

-(NSString *)signRequest:(NSURLRequest *)request {
NSMutableString *sig = [[NSMutableString alloc] init];

// Request Method
[sig appendFormat:@"%@\n", [request HTTPMethod]];

// Content MD5
[sig appendFormat:@"%@\n", [[request HTTPBody] MD5String]];

// Content Type
[sig appendFormat:@"%@\n", [request valueForHTTPHeaderField:@"Content-Type"]];

// Date
[sig appendFormat:@"%@\n", [request valueForHTTPHeaderField:@"Date"]];

// Canonicalized Headers
[sig appendFormat:@"%@\n", @""]; // Empty for now

// Canonicalized Resource
[sig appendFormat:@"%@", [NSString stringWithFormat:@"/%@%@", _bucket, request.URL.path]];

NSString *encodedString = [[[sig dataUsingEncoding:NSUTF8StringEncoding] hmacSHA1SignatureWithKey:_secretKey] base64String];

return [[NSString alloc] initWithFormat:@"AWS %@:%@", _accessKey, encodedString];
}

以下是您如何使用它来尝试执行简单的 PUT 请求。

#import "S3Lite.h"

S3Lite *aws = [[S3Lite alloc] initWithAccessKey:@"<access key>"
secretKey:@"<secret key>"
bucketName:@"<bucket name>"
region:kAmazonS3EUWest1Region
useSSL:NO];

NSData *file = [[NSData alloc] initWithContentsOfFile:@"<path to a file>"];

[aws putObjectWithData:file inPath:@"aRandomFile.png" withContentType:nil];

如能提供正确方向的任何帮助,我们将不胜感激。

小号

最佳答案

即使您无法直接使用适用于 iOS 的 AWS 开发工具包,它也是开源的,您可能会从此处检查请求签名代码中获得一些想法:

https://github.com/aws/aws-sdk-ios/blob/master/AWSCore/Authentication/AWSSignature.m

关于objective-c - 使用 Objective-C/Cocoa 的 AWS 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19009537/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com