使用临时凭证来自于Amazon STS - Amazon SDK for PHP
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用临时凭证来自于Amazon STS

Amazon Security Token Service(Amazon STS) 允许您申请有限权限,临时凭证适用于 IAM 用户,或者适用于您通过联合身份验证的用户。要更深入地理解,请参阅临时安全凭证中的IAM 用户指南. 可使用临时安全凭证访问大多数 Amazon 服务。有关接受临时安全凭证的服务的列表,请参阅Amazon使用 IAM 的服务中的IAM 用户指南.

一个常见的临时凭证使用案例是向移动或客户端应用程序授予对Amazon通过第三方身份提供商对用户进行身份验证来提供资源(参见Web 联合身份验证)。

获取临时凭证

Amazon STS 有多个操作可返回临时凭证,但对于演示用途而言,GetSessionToken 操作是最简单的。假设您有一个实例 Aws\Sts\StsClient 存储在 $stsClient 变量中,您可以调用它,如下所示。

$result = $stsClient->getSessionToken();

GetSessionToken 和其他 Amazon STS 操作的结果始终包含一个 'Credentials' 值。如果输出结果 (例如,print_r($result)),则结果类似如下:

Array ( ... [Credentials] => Array ( [SessionToken] => '<base64 encoded session token value>' [SecretAccessKey] => '<temporary secret access key value>' [Expiration] => 2013-11-01T01:57:52Z [AccessKeyId] => '<temporary access key value>' ) ... )

向提供临时证书Amazon SDK for PHP

可将临时凭证用于其他Amazon客户端,方法是实例化客户端并从接收的值Amazon STS直接地。

use Aws\S3\S3Client; $result = $stsClient->getSessionToken(); $s3Client = new S3Client([ 'version' => '2006-03-01', 'region' => 'us-west-2', 'credentials' => [ 'key' => $result['Credentials']['AccessKeyId'], 'secret' => $result['Credentials']['SecretAccessKey'], 'token' => $result['Credentials']['SessionToken'] ] ]);

您还可以构建 Aws\Credentials\Credentials 对象并在实例化客户端时使用该对象。

use Aws\Credentials\Credentials; use Aws\S3\S3Client; $result = $stsClient->getSessionToken(); $credentials = new Credentials( $result['Credentials']['AccessKeyId'], $result['Credentials']['SecretAccessKey'], $result['Credentials']['SessionToken'] ); $s3Client = new S3Client([ 'version' => '2006-03-01', 'region' => 'us-west-2', 'credentials' => $credentials ]);

但是,提供临时凭证的最佳 方式是使用 StsClient 随附的 createCredentials() 帮助程序方法。此方法会从 Amazon STS 结果中提取数据,然后为您创建 Credentials 对象。

$result = $stsClient->getSessionToken(); $credentials = $stsClient->createCredentials($result); $s3Client = new S3Client([ 'version' => '2006-03-01', 'region' => 'us-west-2', 'credentials' => $credentials ]);

有关为何需要在应用程序或项目中使用临时凭证的更多信息,请参阅 文档中的授予临时访问权限的情形Amazon STS。