

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Usa credenciales temporales AWS STS del SDK for PHP
<a name="guide_credentials_temporary"></a>

 AWS Security Token Service (AWS STS) le permite solicitar **credenciales temporales** con privilegios limitados para los usuarios de IAM o para los usuarios que autentique mediante una federación de identidades. Para obtener más información, consulte [Credenciales de seguridad temporales](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html) en la *guía del usuario de IAM*. Puede utilizar credenciales de seguridad temporales para acceder a la mayoría AWS de los servicios. Para obtener una lista de los servicios que aceptan credenciales de seguridad temporales, consulte [los servicios AWS que funcionan con IAM ](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html) en la*Guía del usuario de IAM*.

Un caso de uso habitual de las credenciales temporales consiste en conceder a las aplicaciones móviles o del lado del cliente acceso a AWS los recursos mediante la autenticación de los usuarios a través de proveedores de identidad externos (consulte [Web Identity](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_oidc.html) Federation).

## Obtención de credenciales temporales
<a name="getting-temporary-credentials"></a>

AWS STS tiene varias operaciones que devuelven credenciales temporales, pero la `GetSessionToken` operación es la más sencilla de demostrar. El siguiente fragmento recupera las credenciales temporales al llamar al método `getSessionToken` del cliente STS del SDK de PHP.

```
$sdk = new Aws\Sdk([
    'region'   => 'us-east-1',
]);

$stsClient = $sdk->createSts();

$result = $stsClient->getSessionToken();
```

El resultado de `GetSessionToken` y las demás AWS STS operaciones siempre contienen un `'Credentials'` valor. Si imprime `$result` (por ejemplo, mediante `print_r($result)`), tendrá el siguiente aspecto.

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

## Proporcionar credenciales temporales al AWS SDK para PHP
<a name="providing-temporary-credentials-to-the-sdk-php"></a>

Puede usar credenciales temporales con otro AWS cliente creando una instancia del cliente y transfiriendo los valores recibidos directamente de AWS STS él.

```
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']
    ]
]);
```

También puede crear un objeto `Aws\Credentials\Credentials` y utilizarlo cuando cree una instancia del cliente.

```
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
]);
```

Sin embargo, la *mejor* manera de proporcionar credenciales temporales es utilizar el método de ayudante `createCredentials()` incluido con `StsClient`. Este método extrae los datos de un AWS STS resultado y crea el `Credentials` objeto automáticamente.

```
$result = $stsClient->getSessionToken();
$credentials = $stsClient->createCredentials($result);

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

Para obtener más información sobre por qué podría necesitar usar credenciales temporales en su aplicación o proyecto, consulte [Escenarios para la concesión de acceso temporal](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html) en la AWS STS documentación.