Uso de las operaciones de API de federación de OIDC para aplicaciones móviles - AWS Identity and Access Management

Uso de las operaciones de API de federación de OIDC para aplicaciones móviles

Para obtener los mejores resultados, utilice Amazon Cognito como su agente de identidades para casi todos los casos de federación de OIDC. Amazon Cognito es fácil de utilizar y ofrece capacidades adicionales, tales como acceso anónimo (no autenticado) y sincronización de datos del usuario entre varios dispositivos y proveedores. Sin embargo, si ya ha creado una aplicación que utiliza federación de OIDC llamando manualmente a la API AssumeRoleWithWebIdentity, puede seguir utilizándola y sus aplicaciones seguirán funcionando correctamente.

El esquema general del proceso de uso de una federación de OIDC sin Amazon Cognito es el siguiente:

  1. Inscríbase como desarrollador con el proveedor de identidad (IdP) externo y configure su aplicación con él, que le proporcionará un ID único para su aplicación. (Cada IdP utiliza una terminología diferente para este proceso. En este esquema se utiliza el término configurar para el proceso de identificación de su aplicación con el IdP). Cada proveedor de identidad (IdP) le ofrece una ID de aplicación exclusivo para dicho IdP, de modo que si configura la misma aplicación con varios proveedores de identidad (IdP), la aplicación tendrá varios ID de aplicación. Puede configurar varias aplicaciones en un mismo proveedor.

    Los siguientes enlaces externos proporcionan información sobre el uso de algunos de los proveedores de identidad (IdP) habituales:

    importante

    Si utiliza un proveedor de identidades OIDC de Google, Facebook o Amazon Cognito, no cree un proveedor de identidad de IAM independiente en el AWS Management Console. AWS tiene estos proveedores de identidad OIDC incorporados y disponibles para su uso. Omita el siguiente paso y vaya directamente a crear nuevos roles con su proveedor de identidades.

  2. Si utiliza un proveedor de identidad (IdP) distinto de Google, Facebook o Amazon Cognito compatible con OIDC, cree una entidad de proveedor de identidades de IAM para dicho proveedor.

  3. En IAM, cree uno o varios roles. Para cada rol, defina quién puede asumir el rol (la política de confianza) y los permisos que los usuarios de la aplicación tienen (la política de permisos). Por lo general, debe crear un rol para cada proveedor de identidad (IdP) que una aplicación admite. Por ejemplo, puede crear un rol que asume una aplicación si el usuario inicia sesión mediante Login with Amazon, un segundo rol para la misma aplicación si el usuario inicia sesión en Facebook y un tercer rol para la aplicación si el usuario inicia sesión a través de Google. En el caso de la relación de confianza, especifique el proveedor de identidad (IdP) (como Amazon.com) como Principal (la entidad de confianza) e incluya un elemento Condition que coincida con el ID de la aplicación asignado al proveedor de identidad (IdP). En Creación de un rol para un proveedor de identidad de terceros (federación) podrá encontrar ejemplos de roles para distintos proveedores.

  4. En su aplicación, autentique los usuarios con el proveedor de identidad (IdP). Los detalles de cómo hacerlo varían en función del proveedor de identidad que utilice (Login with Amazon, Facebook o Google) y de la plataforma de la aplicación. Por ejemplo, el método de autenticación de una aplicación Android puede diferir del método de una aplicación iOS o una aplicación web basada en JavaScript.

    Por lo general, si el usuario aún no ha iniciado sesión, el proveedor de identidad (IdP) se encarga de mostrar una página de inicio de sesión. Una vez que el proveedor de identidad (IdP) autentica al usuario, el IdP devuelve un token de autenticación con información sobre el usuario a su aplicación. La información que se incluye depende de lo que el proveedor de identidad (IdP) expone y de la información que el usuario está dispuesto a compartir. Puede utilizar esta información en su aplicación.

  5. En su aplicación, realice una llamada sin firma a la acción AssumeRoleWithWebIdentity para solicitar credenciales de seguridad temporales. En la solicitud, transmita el token de autenticación del proveedor de identidades (IdP) y especifique el Nombre de recurso de Amazon (ARN) para el rol de IAM que ha creado para dicho proveedor. AWS verifica que el token es de confianza y válido y, en tal caso, devuelve las credenciales de seguridad temporales a su aplicación que tienen los permisos para el rol que indica en la solicitud. La respuesta también incluye los metadatos sobre el usuario del proveedor de identidad (IdP), tales como el ID de usuario único que el proveedor de identidad (IdP) asocia al usuario.

  6. Al utilizar las credenciales de seguridad temporales de la respuesta de AssumeRoleWithWebIdentity, la aplicación envía solicitudes firmadas a las operaciones de la API de AWS. La información del ID de usuario del IdP puede distinguir entre los usuarios de su aplicación, por ejemplo, puede colocar objetos en las carpetas de Amazon S3 que incluyan el ID de usuario como prefijos o sufijos. Esto le permite crear políticas de control de acceso que bloqueen la carpeta para que solo el usuario con dicho ID pueda tener acceso a ella. Para obtener más información, consulte Identifique a los usuarios con la federación OIDC más adelante en este tema.

  7. Su aplicación debe almacenar en caché las credenciales de seguridad temporales para que no tenga que obtener unas nuevas cada vez que la aplicación tenga que realizar una solicitud a AWS. De forma predeterminada, las credenciales son válidas durante una hora. Cuando las credenciales caduquen (o antes), realice otra llamada a AssumeRoleWithWebIdentity para obtener un nuevo conjunto de credenciales de seguridad temporales. En función del proveedor de identidad (IdP) y el modo en que administra sus tokens, es posible que tenga que actualizar el token del proveedor de identidad (IdP) antes de realizar una nueva llamada a AssumeRoleWithWebIdentity, ya que los tokens del proveedor de identidad (IdP) también suelen caducar después de un tiempo establecido. Si utiliza el SDK for iOS de AWS o el SDK for Android de AWS, puede utilizar la acción AmazonSTSCredentialsProvider, que administra las credenciales temporales de IAM, incluida su actualización según sea necesario.