私たちは、AWS V4シグネチャメカニズムを使用して、iOSアプリケーションからAPIゲートウェイエンドポイントを呼び出します。コードにアクセスキーIDと秘密鍵が埋め込まれていましたが、正常に動作していました。明らかにこれは安全な方法ではなく、AWS Cognitoを使用することをお勧めします。 Objective-C iOSコードのAWSCredentialsオブジェクトから取得した一時アクセスキーと秘密(おそらく同様にセッションキー)を使用して、APIゲートウェイエンドポイントに安全なリクエストを行うにはどうすればよいか知りたかったのです。AWS Cognitoを使用したAWS APIゲートウェイの呼び出し
アカウントアクセスキーと秘密の代わりにV4シグネチャを生成するためにCognitoから取得した一時アクセスキーと秘密を使用しようとしましたが、これは正しいアプローチのようには見えません。 APIゲートウェイメソッドは、認証設定としてAWS_IAMを使用して有効になっています。私たちが必要としないので、
AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:AWSRegionUSEast1 identityPoolId:@"us-east-1:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"];
私たちは、非認証の役割を使用している
{ status code: 403, headers {
Connection = "keep-alive";
"Content-Length" = 69;
"Content-Type" = "application/json";
Date = "Fri, 13 Jan 2017 10:26:38 GMT";
Via = "1.1 .....cloudfront.net (CloudFront)";
"X-Amz-Cf-Id" = "...";
"X-Cache" = "Error from cloudfront";
"x-amzn-ErrorType" = UnrecognizedClientException;
"x-amzn-RequestId" = "...";
} }
IdentityPoolIdが使用されているAWS Cognitoに連携アイデンティティの下に作成アイデンティティプールから:
この
は、エラーは、我々が取得することですユーザー固有の認証の任意の形式。そして、この役割は、以下のポリシーを持っています AmazonAPIGatewayInvokeFullAccess AmazonAPIGatewayPushToCloudWatchLogs CloudFrontFullAccess AmazonCognitoDeveloperAuthenticatedIdentities AmazonAPIGatewayAdministrator CloudFrontReadOnlyAccess IAMReadOnlyAccess AmazonCognitoPowerUser私はV4署名を生成するCognitoを使用するか、完全にプロセスをバイパスすることができますどのように、ここで助けてください。
資格プロバイダを使用している構成を登録しましたか? – donkon