좋아,이 말은 나를 괴롭힌다.Objective-C/Cocoa를 사용한 AWS 인증
S3와의 기본적인 상호 작용을 허용하는 간단한 AWS S3 클라이언트를 만들려고 시도하고 있지만 잘못된 것으로 보이고 실제로 무엇인지 파악할 수없는 것 같습니다. 그것은 분명히 명백 할 수도 있지만, 나는 그것을 보지 않을 것이다.
내 키는 정확하고 테스트되지 않았다 - 아니 우리가 제공 한 서명과 일치하지 않습니다 계산 된 '요청 서명을 받고 계속,
문제가 서명 될 것으로 보인다 공백 등 후행. Amazon의 REST API에서 키와 서명 방법 '오류를 확인하십시오. Base64, HMAC SHA1 세대 기능을 추가하는 다양한 카테고리를 만들었으며 다양한 온라인 예제를 살펴 보았지만 아직까지는 성공하지 못했습니다.
아마존에서 제공하는 라이브러리를 사용하지 않는 이유는 코코아 터치를 목표로하고 있기 때문에 코코아에서 작동하도록 해킹하고 싶지 않기 때문입니다.
당신은 여기에 모든 파일/코드의 복사본을 잡아 수 있습니다 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 SDK를 사용할 수없는 경우에도
S
S3의 "프로토콜"에 대해 많이 알지 못해서 정말 도움이되지 않지만 Java 라이브러리 JetS3t를 살펴 보았습니까? 그들이 어떻게했는지 보려고 할 수 있습니다. http://jets3t.s3.amazonaws.com/downloads.html –
@thibaultd 다양한 다른 라이브러리를 보았습니다. 볼 수있는 것에서도 수업은 거의 같습니다. 그냥 문제를 찾지 못하는 것 같습니다. – SeanNieuwoudt
http://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html을 기반으로 한 단위 테스트를 만들었고 코드가 통과 할 때까지 모든 것이 작동하고있었습니다. . –