Php 使用STS凭证授权AWS-无会话令牌

Php 使用STS凭证授权AWS-无会话令牌,php,ios,amazon-web-services,amazon-s3,titanium,Php,Ios,Amazon Web Services,Amazon S3,Titanium,我正在使用钛合金开发iOS应用程序。部分应用程序需要将照片直接上传到S3。现在我不想把主要的AWS凭证放在这里,所以我使用安全令牌服务来生成一些临时凭证。那部分很好用 如果有帮助,生成凭据的代码: $sts = StsClient::factory(array( 'key' => 'KEY_HERE', 'secret' => 'SECRET_HERE' )); $result = $sts->getSessionToken(); 除此之外,我还返回了A

我正在使用钛合金开发iOS应用程序。部分应用程序需要将照片直接上传到S3。现在我不想把主要的AWS凭证放在这里,所以我使用安全令牌服务来生成一些临时凭证。那部分很好用

如果有帮助,生成凭据的代码:

$sts = StsClient::factory(array(
    'key'    => 'KEY_HERE',
    'secret' => 'SECRET_HERE'
));
$result = $sts->getSessionToken();
除此之外,我还返回了
AccessKeyId
SecretAccessKey
&
SessionToken
。通过PHP传递所有这三个功能非常好,我可以很好地上传。但是,我将这些凭据传递给应用程序,并需要从那里使用它们

问题是,连接AWS的每种方法(包括“官方”AWS模块)都只使用访问密钥和密钥,即无法传递会话令牌,因此我无法授权。e、 g.钛AWS模块的工作方式类似于AWS.Authority(accessKey、secretKey)-它不接受会话令牌


现在,我真正的问题是——我如何与一个密钥/秘密联系并让它被接受。我需要设置一些配置吗?我是否需要破解模块以某种方式传递令牌?我对AWS的世界还很陌生,所以有些事情仍然很令人困惑,任何指点都会非常感激

另一个选项是使用IAM生成只允许将文件上载到S3的用户。该用户拥有自己的访问密钥和密码,您可以随应用程序一起提供


如果我没记错的话,AWS不赞成在4月份为新帐户使用主凭据,因此熟悉IAM无论如何都是一个不错的选择

这里有一个链接,指向AWS iOS SDK文档中的示例。 它们初始化对象名AmazonCredentials(包含密钥、访问密钥和会话令牌),然后使用AmazonCredentials初始化amazoncons3client


看起来IAM方法是我一直在寻找的方法,所以谢谢!
AmazonCredentials *credentials = [AmazonKeyChainWrapper getCredentialsFromKeyChain];

[s3 release];
s3  = [[AmazonS3Client alloc] initWithCredentials:credentials];
s3.endpoint = [AmazonEndpoints s3Endpoint:US_WEST_2];