使用 Amazon STS 中的临时凭证 - Amazon适用于 PHP 的开发工具包
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

使用 Amazon STS 中的临时凭证

Amazon Security Token Service(Amazon STS)允许您请求有限权限,临时凭证用于 IAM 用户或您通过身份联合身份验证的用户。

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

注意

并不是每项服务都支持 Amazon STS 所生成的临时凭证。为了确定您使用的服务是否支持临时凭证,请参阅 IAM 临时安全凭证

获得临时凭证

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>' ) ... )

向 提供临时凭证AmazonSDK 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。