Inicio de sesión único con AWS SDK for .NET - AWS SDK for .NET

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.

Inicio de sesión único con AWS SDK for .NET

AWS IAM Identity Center es un servicio de inicio de sesión único (SSO) basado en la nube que facilita la administración centralizada de acceso de SSO a todas las Cuentas de AWS y aplicaciones en la nube. Para obtener más información, consulte la Guía del usuario de IAM Identity Center.

Si no está familiarizado con la forma en que un SDK interactúa con IAM Identity Center, consulte la siguiente información.

En términos generales, los SDK interactúan con IAM Identity Center de forma similar al siguiente patrón:

  1. IAM Identity Center se configura (normalmente, a través de la consola de IAM Identity Center) y se invita a un usuario de SSO a participar.

  2. El archivo config de AWS compartido del equipo del usuario se actualiza con la información de SSO.

  3. El usuario inicia sesión a través de IAM Identity Center y recibe unas credenciales de duración limitada correspondientes a los permisos de AWS Identity and Access Management (IAM) que se han configurado para él. Este inicio de sesión se puede realizar a través de una herramienta que no pertenezca a SDK, como AWS CLI, o bien mediante programación usando una aplicación .NET.

  4. El usuario se pone a trabajar. Cuando ejecute otras aplicaciones que usen SSO, no necesitará volver a iniciar sesión para abrirlas.

En lo que queda de este tema se proporciona información de referencia para configurar y usar AWS IAM Identity Center. Muestra información complementaria y más avanzada que la configuración básica de SSO suministrada en Configuración de la autenticación de SDK. Si no está familiarizado con el uso de SSO en AWS, quizás le interese consultar primero ese tema para obtener información fundamental y, después, pasar a los siguientes tutoriales para ver SSO en acción:

Este tema contiene las siguientes secciones:

Requisitos previos

Antes de utilizar IAM Identity Center, debe realizar algunas tareas, como seleccionar un origen de identidad y configurar las Cuentas de AWS y las aplicaciones pertinentes. Para obtener más información, consulte los siguientes temas:

  • Para obtener información general sobre estas tareas, consulte Introducción en la Guía del usuario de IAM Identity Center.

  • Para ver ejemplos concretos de tareas, consulte la lista de tutoriales al final de este tema. No obstante, procure revisar la información de este tema antes de probar con los tutoriales.

Configuración de un perfil de SSO

Una vez que IAM Identity Center esté configurado en la Cuenta de AWS correspondiente, hay que agregar un perfil con nombre para SSO al archivo config de AWS compartido del usuario. Este perfil se utiliza para conectarse al portal de acceso a AWS, donde se obtienen unas credenciales de duración limitada de los permisos de IAM configurados para el usuario.

El archivo config suele denominarse %USERPROFILE%\.aws\config en Windows y ~/.aws/config en Linux y macOS. Puede usar el editor de texto de su elección para agregar un nuevo perfil de SSO. También puede utilizar el comando aws configure sso. Para obtener más información sobre este comando, consulte Configurar la AWS CLI para usar IAM Identity Center en la Guía del usuario de AWS Command Line Interface.

El nuevo perfil es similar al siguiente:

[profile my-sso-profile] sso_start_url = https://my-sso-portal.awsapps.com/start sso_region = us-west-2 sso_account_id = 123456789012 sso_role_name = SSOReadOnlyRole

A continuación se definen los ajustes del nuevo perfil. Los dos primeros ajustes definen el portal de acceso de AWS. Los otros dos ajustes son unos ajustes que, en conjunto, definen los permisos que se han configurado para un usuario. Estos cuatro ajustes son obligatorios.

sso_start_url

URL que apunta al portal de acceso de AWS de la organización. Para encontrar este valor, abra la consola de IAM Identity Center, seleccione Configuración y busque URL de portal.

sso_region

Región de Región de AWS que contiene el host del portal de acceso. Es la región que se seleccionó al habilitar IAM Identity Center. Puede ser una región distinta de las que se usan en otras tareas.

Para obtener una lista completa de los puntos de conexiones regionales de Regiones de AWS, consulte Regiones y puntos de conexión en la Referencia general de Amazon Web Services.

sso_account_id

ID de una Cuenta de AWS que se ha agregado a través del servicio de AWS Organizations. Para ver la lista de cuentas disponibles, vaya a la consola del Centro de identidades de IAM y abra la página Cuentas de AWS. El ID de cuenta que seleccione en este ajuste se corresponderá con el valor que tenga pensado asignar al ajuste sso_role_name, que se muestra a continuación.

sso_role_name

Nombre de un conjunto de permisos de IAM Identity Center. Este conjunto de permisos define los permisos que se otorgan a un usuario a través de IAM Identity Center.

El siguiente procedimiento es una de las formas para encontrar el valor de este ajuste.

  1. Vaya a la consola de IAM Identity Center y abra la página Cuentas de AWS.

  2. Seleccione una cuenta para ver sus detalles. La cuenta que seleccione será la que contenga el usuario o grupo de SSO al que quiera conceder permisos de SSO.

  3. Consulte la lista de usuarios y grupos asignados a la cuenta y busque el usuario o grupo de su interés. El conjunto de permisos que especifique en el ajuste sso_role_name es uno de los conjuntos asociados a este usuario o grupo.

Al asignar un valor a este ajuste, utilice el nombre del conjunto de permisos, no el nombre de recurso de Amazon (ARN).

Los conjuntos de permisos tienen asociadas políticas de IAM y políticas de permisos personalizados. Para obtener más información, consulte Conjuntos de permisos en la Guía del usuario de IAM Identity Center.

Generación y uso de tokens de SSO

Para usar SSO, primero el usuario debe generar un token temporal y, a continuación, usarlo para acceder a los recursos y las aplicaciones de AWS relevantes. En el caso de las aplicaciones .NET, puede utilizar los siguientes métodos para generar y utilizar los siguientes tokens temporales:

  • Crear aplicaciones .NET que generen primero un token (si es necesario) y, luego, usar el token

  • Generar un token con AWS CLI y, a continuación, usarlo en las aplicaciones .NET

Estos métodos se describen en las siguientes secciones y se explican en los tutoriales.

importante

La aplicación debe hacer referencia a los siguientes paquetes NuGet para que la resolución de SSO funcione:

  • AWSSDK.SSO

  • AWSSDK.SSOOIDC

Si no se hace referencia a estos paquetes, se producirá una excepción de tiempo de ejecución.

En esta sección se muestra cómo crear una aplicación .NET que genera un token de SSO temporal, si es necesario, y luego lo usa. Para ver un tutorial completo de este proceso, consulte Tutorial de SSO utilizando únicamente aplicaciones .NET.

Generación y uso de un token de SSO mediante programación

Aparte de con AWS CLI, también se puede generar un token de SSO mediante programación.

Para ello, la aplicación crea un objeto AWSCredentials del perfil de SSO, que carga las credenciales temporales, si las hay. A continuación, la aplicación debe convertir el objeto AWSCredentials en un objeto SSOAWSCredentials y establecer algunas propiedades en Opciones, incluido el método de devolución de llamada que se usará para solicitar al usuario la información de inicio de sesión, si es necesario.

Este método se muestra en el siguiente fragmento de código.

importante

La aplicación debe hacer referencia a los siguientes paquetes NuGet para que la resolución de SSO funcione:

  • AWSSDK.SSO

  • AWSSDK.SSOOIDC

Si no se hace referencia a estos paquetes, se producirá una excepción de tiempo de ejecución.

static AWSCredentials LoadSsoCredentials() { var chain = new CredentialProfileStoreChain(); if (!chain.TryGetAWSCredentials("my-sso-profile", out var credentials)) throw new Exception("Failed to find the my-sso-profile profile"); var ssoCredentials = credentials as SSOAWSCredentials; ssoCredentials.Options.ClientName = "Example-SSO-App"; ssoCredentials.Options.SsoVerificationCallback = args => { // Launch a browser window that prompts the SSO user to complete an SSO sign-in. // This method is only invoked if the session doesn't already have a valid SSO token. // NOTE: Process.Start might not support launching a browser on macOS or Linux. If not, // use an appropriate mechanism on those systems instead. Process.Start(new ProcessStartInfo { FileName = args.VerificationUriComplete, UseShellExecute = true }); }; return ssoCredentials; }

Si no hay un token de inicio de sesión único apropiado disponible, se abre la ventana del navegador predeterminada y la página de inicio de sesión correspondiente. Por ejemplo, si utiliza IAM Identity Center como origen de identidad, el usuario verá una página de inicio de sesión similar a la siguiente:

Página de inicio de sesión de AWS IAM Identity Center.
nota

La cadena de texto de SSOAWSCredentials.Options.ClientName que proporcione no puede tener espacios. Si la cadena tiene espacios, se producirá una excepción de tiempo de ejecución.

Tutorial de SSO utilizando únicamente aplicaciones .NET

En esta sección se describe cómo generar un token de SSO temporal mediante AWS CLI y cómo usarlo en una aplicación. Para ver un tutorial completo de este proceso, consulte Tutorial de SSO mediante AWS CLI y aplicaciones .NET.

Generación de un token de SSO mediante AWS CLI

Además de generar un token de SSO temporal mediante programación, también se puede generar con AWS CLI. La siguiente información describe cómo hacerlo.

Una vez que el usuario crea un perfil habilitado para SSO, como se muestra en la sección anterior, este ejecuta el comando aws sso login desde AWS CLI. Debe asegurarse de incluir el parámetro --profile con el nombre del perfil habilitado para SSO. Esto se muestra en el siguiente ejemplo:

aws sso login --profile my-sso-profile

Si el usuario quiere generar un nuevo token temporal después de que caduque el actual, puede volver a ejecutar el mismo comando.

Uso del token de SSO generado en una aplicación .NET

La siguiente información muestra cómo utilizar un token temporal que ya se ha generado.

importante

La aplicación debe hacer referencia a los siguientes paquetes NuGet para que la resolución de SSO funcione:

  • AWSSDK.SSO

  • AWSSDK.SSOOIDC

Si no se hace referencia a estos paquetes, se producirá una excepción de tiempo de ejecución.

La aplicación crea un objeto AWSCredentials para el perfil de SSO, que carga las credenciales temporales generadas anteriormente por AWS CLI. Esto es similar a los métodos que se muestran en Acceso a las credenciales y perfiles en una aplicación y presenta el siguiente formato:

static AWSCredentials LoadSsoCredentials() { var chain = new CredentialProfileStoreChain(); if (!chain.TryGetAWSCredentials("my-sso-profile", out var credentials)) throw new Exception("Failed to find the my-sso-profile profile"); return credentials; }

A continuación, el objeto AWSCredentials se pasa al constructor de un cliente de servicio. Por ejemplo:

var S3Client_SSO = new AmazonS3Client(LoadSsoCredentials());
nota

No es necesario usar AWSCredentials para cargar credenciales temporales si la aplicación se ha creado para usar el perfil [default] para SSO. En ese caso, la aplicación puede crear clientes de servicio de AWS sin parámetros, de forma similar a “var client = new AmazonS3Client();”.

Tutorial de SSO mediante AWS CLI y aplicaciones .NET

Recursos adicionales

Para obtener más ayuda, consulte los recursos siguientes: