

La AWS SDK para .NET V3 ha entrado en modo de mantenimiento.

Le recomendamos que migre a la [AWS SDK para .NET V4](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/welcome.html). Para obtener información y detalles adicionales sobre cómo migrar, consulta nuestro [anuncio sobre el modo de mantenimiento](https://aws.amazon.com/blogs/developer/aws-sdk-for-net-v3-maintenance-mode-announcement/).

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.

# Resolución de credenciales y perfil
<a name="creds-assign"></a>

AWS SDK para .NET busca credenciales en un determinado orden y usa el primer conjunto disponible para la aplicación actual.

**Orden de búsqueda de credenciales**

1. Credenciales establecidas de forma explícita en el cliente de servicio de AWS, tal y como se describe en [Acceso a las credenciales y perfiles en una aplicación](creds-locate.md).
**nota**  
Este tema está en la sección [Consideraciones especiales](special-considerations.md) porque no es el método preferido para especificar credenciales.

1. Un perfil de credenciales con el nombre especificado por un valor en [AWSConfigs.AWSProfileName](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Amazon/TAWSConfigs.html#properties).

1. Un perfil de credenciales con el nombre especificado por la variable de entorno `AWS_PROFILE`.

1. El perfil de credenciales `[default]`.

1. [SessionAWSCredentials](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TSessionAWSCredentials.html) creadas a partir de las variables de entorno `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY` y `AWS_SESSION_TOKEN`, si no están todas vacías.

1.  [BasicAWSCredentials](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TBasicAWSCredentials.html) creadas a partir de las variables de entorno `AWS_ACCESS_KEY_ID` y `AWS_SECRET_ACCESS_KEY`, si ambas no están vacías.

1. El [proveedor de credenciales de contenedor](https://docs.aws.amazon.com/sdkref/latest/guide/feature-container-credentials.html).

1. Metadatos de la instancia de Amazon EC2.

Si la aplicación se ejecuta en una instancia de Amazon EC2, como un entorno de producción, utilice un rol de IAM tal como se describe en [Concesión de acceso mediante un rol de IAM](net-dg-hosm.md). Si no es el caso (como, por ejemplo, en las pruebas de versión preliminar) almacene las credenciales en un archivo de credenciales de AWS al que la aplicación web tenga acceso en el servidor.

## Resolución de perfiles
<a name="net-dg-config-creds-profile-resolution"></a>

Con dos tipos de mecanismos de almacenamiento de credenciales diferentes, es importante saber cómo configurar AWS SDK para .NET para usarlos. La propiedad [AWSConfigs.AWSProfilesLocation](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Amazon/TAWSConfigs.html) controla la forma en que AWS SDK para .NET busca perfiles de credenciales.


****  

| AWSProfilesLocation | Comportamiento de resolución de perfiles | 
| --- | --- | 
|  null (no establecido) o vacío  |  Busque en SDK Store si la plataforma lo admite y, a continuación, busque el archivo de credenciales de AWS compartido en la [ubicación predeterminada](creds-file.md). Si el perfil no está en ninguna de esas ubicaciones, busque en `~/.aws/config` (Linux o macOS) o en `%USERPROFILE%\.aws\config` (Windows).  | 
|  Ruta a un archivo en el formato del archivo de credenciales de AWS  |  Busque *solo* en el archivo especificado el perfil con el nombre indicado.  | 

## Uso de credenciales de cuentas de usuario federado
<a name="net-dg-config-creds-saml"></a>

Las aplicaciones que usan AWS SDK para .NET ([AWSSDK.Core](https://www.nuget.org/packages/AWSSDK.Core/) versión 3.1.6.0 y posterior) pueden usar cuentas de usuario federado a través de Servicios de federación de Active Directory (AD FS) para obtener acceso a servicios de AWS mediante el lenguaje de marcado de aserción de seguridad (SAML).

La compatibilidad del acceso federado significa que los usuarios pueden autenticarse mediante su Active Directory. Las credenciales temporales se conceden al usuario automáticamente. Estas credenciales temporales, que son válidas durante una hora, se usan cuando la aplicación invoca servicios de AWS. El SDK gestiona la administración de las credenciales temporales. Para las cuentas de usuario unidas a un dominio, si su aplicación realiza una llamada, pero las credenciales han caducado, el usuario vuelve a autenticarse automáticamente y se conceden credenciales actualizadas (para las cuentas que no unidas a un dominio, se le pide al usuario que escriba las credenciales antes de la segunda autenticación).

Para usar este soporte en su aplicación de .NET, primero debe configurar el perfil de rol mediante un cmdlet de PowerShell. Para saber cómo, consulte la [documentación de AWS Tools for Windows PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/saml-pst.html).

Después de configurar el perfil del rol, haga referencia al perfil en la aplicación. Hay varias formas de hacerlo; una de ellas consiste en utilizar la propiedad [AWSConfigs.AWSProfileName](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Amazon/TAWSConfigs.html) del mismo modo que se utilizaría con otros perfiles de credenciales.

El ensamblado de *AWS Security Token Service* ([AWSSDK.SecurityToken](https://www.nuget.org/packages/AWSSDK.SecurityToken/)) proporciona la compatibilidad con SAML para obtener credenciales de AWS. Para usar credenciales de cuentas de usuario federado, asegúrese de que este ensamblado está disponible para la aplicación.

## Especificación de roles o credenciales temporales
<a name="net-dg-config-creds-assign-role"></a>

En el caso de las aplicaciones que se ejecutan en instancias de Amazon EC2, el modo más seguro de administrar las credenciales es usar roles de IAM, como se describe en [Concesión de acceso mediante un rol de IAM](net-dg-hosm.md).

Para los escenarios de aplicación en los que el software ejecutable está disponible para los usuarios externos a su organización, recomendamos que diseñe el software para usar *credenciales de seguridad temporales*. Además de proporcionar acceso restringido a los recursos de AWS, estas credenciales tienen la ventaja de caducar después de un período de tiempo especificado. Para obtener más información sobre cómo usar credenciales de seguridad temporales, consulte lo siguiente:
+  [Credenciales de seguridad temporales](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html) 
+  [Grupos de identidades de Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-identity.html)

## Uso de credenciales de proxy
<a name="net-dg-config-creds-proxy"></a>

Si el software se comunica con AWS a través de un proxy, puede especificar credenciales para el proxy mediante la propiedad `ProxyCredentials` en la clase `Config` de un servicio. La clase `Config` de un servicio suele formar parte del espacio de nombres principal del servicio. Ejemplos de ello son los siguientes [AmazonCloudDirectoryConfig](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/CloudDirectory/TCloudDirectoryConfig.html) del espacio de nombres [Amazon.CloudDirectory](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/CloudDirectory/NCloudDirectory.html) y [AmazonGameLiftConfig](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/GameLift/TGameLiftConfig.html) del espacio de nombres [Amazon.GameLift](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/GameLift/NGameLift.html).

Por ejemplo, en [Amazon S3](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/S3/TS3Config.html) se podría usar un código similar al siguiente, donde `SecurelyStoredUserName` y `SecurelyStoredPassword` son el nombre de usuario y la contraseña del proxy especificados en un objeto [NetworkCredential](https://learn.microsoft.com/en-us/dotnet/api/system.net.networkcredential).

```
AmazonS3Config config = new AmazonS3Config();
config.ProxyCredentials = new NetworkCredential(SecurelyStoredUserName, SecurelyStoredPassword);
```

**nota**  
Las versiones anteriores del SDK usaban `ProxyUsername` y `ProxyPassword`, pero estas propiedades están obsoletas.