Flujo de autenticación de proveedores de identidad (IdP) de grupos de usuarios OIDC - Amazon Cognito

Flujo de autenticación de proveedores de identidad (IdP) de grupos de usuarios OIDC

Con el inicio de sesión con OpenID Connect (OIDC), un grupo de usuarios automatiza el flujo de inicio de sesión con código de autorización con su proveedor de identidades (IdP). Una vez que el usuario haya completado el inicio de sesión con su IdP, Amazon Cognito toma su código en el punto de conexión oauth2/idpresponse del proveedor externo. Con el token de acceso obtenido, el grupo de usuarios consulta el punto de conexión userInfo del IdP para recuperar los atributos del usuario. A continuación, el grupo de usuarios compara los atributos recibidos con las reglas de asignación de atributos que se han configurado y rellena el perfil del usuario y el token de identificación en consecuencia.

Los ámbitos de OAuth 2.0 que solicita en la configuración del proveedor de OIDC definen los atributos de usuario que el IdP proporciona a Amazon Cognito. Como práctica de seguridad recomendada, solicite únicamente los ámbitos que correspondan a los atributos que desee asignar al grupo de usuarios. Por ejemplo, si el grupo de usuarios solicita openid profile, obtendrá todos los atributos posibles, pero si se solicita openid email phone_number, solo obtendrá la dirección de correo electrónico y el número de teléfono del usuario. Puede configurar los ámbitos que solicita a los IdP OIDC para que difieran de los que autoriza y solicita en la solicitud de autenticación del cliente de aplicación y del grupo de usuarios.

Cuando un usuario inicia sesión en su aplicación a través de un IdP OIDC, su grupo de usuarios lleva a cabo el siguiente flujo de autenticación.

  1. El usuario llega a la página de inicio de sesión integrada de Amazon Cognito, donde se le ofrece la opción de iniciar sesión a través de un IdP OIDC, por ejemplo Salesforce.

  2. Se redirige al usuario al punto de conexión authorization del IdP OIDC.

  3. Una vez que el usuario se haya autentica, el IdP OIDC lo redirige a Amazon Cognito con un código de autorización.

  4. Amazon Cognito intercambia el código de autorización con el proveedor de identidad OIDC para obtener un token de acceso.

  5. También crea o actualiza la cuenta de usuario en el grupo de usuarios.

  6. Además, otorga a la aplicación tokens de portador, que pueden incluir tokens de identidad, acceso y actualización:

Flujo de autenticación de proveedores de identidad de grupos de usuarios OIDC
nota

Amazon Cognito cancela las solicitudes de autenticación que no se completan en 5 minutos y redirige al usuario a la IU alojada. La página muestra un mensaje de error Something went wrong.

OIDC es una capa de identidad situada sobre OAuth 2.0, que especifica tokens de identidad con formato JSON (JWT) expedidos por los proveedores de identidad a las aplicaciones clientes (que son la parte que otorga la confianza). Consulte la documentación de su proveedor de identidad OIDC para obtener información sobre cómo agregar Amazon Cognito como parte aceptante de OIDC.

Cuando un usuario se autentica con una adjudicación de código de autorización, el grupo de usuarios devuelve tokens de ID, acceso y actualización. El token de ID es un token OIDC estándar para la administración de identidades, y el token de acceso es un token OAuth 2.0 estándar. Para obtener más información sobre los tipos de adjudicaciones que puede admitir el cliente de la aplicación de grupo de usuarios, consulte Autorizar punto de conexión.

Cómo procesa un grupo de usuarios las notificaciones de un proveedor de OIDC

Cuando el usuario completa el inicio de sesión con un proveedor de OIDC externo, la interfaz de usuario alojada en Amazon Cognito recupera un código de autorización del IdP. Su grupo de usuarios intercambia el código de autorización para los tokens de acceso e identificación con el punto de conexióntoken de su IdP. Su grupo de usuarios no transfiere estos tokens a su usuario ni a su aplicación, sino que los usa para crear un perfil de usuario con los datos que presenta en las notificaciones en sus propios tokens.

Amazon Cognito no valida el token de acceso de forma independiente. En cambio, solicita información sobre los atributos del usuario al punto de conexión userInfo del proveedor y espera que se deniegue la solicitud si el token no es válido.

Amazon Cognito valida el token de identificación del proveedor con las siguientes comprobaciones:

  1. Comprueba que el proveedor haya firmado el token con un algoritmo del siguiente conjunto: RSA, HMAC y Elliptic Curve.

  2. Si el proveedor firmó el token con un algoritmo de firma asimétrico, comprueba que el identificador de clave de firma que aparece en la notificación kid del token aparezca en el punto de conexión jwks_uri del proveedor.

  3. Compara la firma del token de identificación con la firma que espera en función de los metadatos del proveedor.

  4. Compara la notificación iss con el emisor de OIDC configurado para el IdP.

  5. Compara si la notificación aud coincide con la identificación de cliente configurada en el IdP o si contiene la identificación de cliente configurada si hay varios valores en el aviso aud.

  6. Comprueba que la marca de tiempo de la notificación exp no sea anterior a la hora actual.

Su grupo de usuarios valida el token de identificación y, a continuación, intenta realizar una solicitud al punto de conexión userInfo del proveedor con el token de acceso del proveedor. Recupera la información del perfil de usuario que los ámbitos del token de acceso le autoricen a leer. A continuación, su grupo de usuarios busca los atributos de usuario que haya establecido como obligatorios en su grupo de usuarios. Debe crear asignaciones de atributos en la configuración del proveedor para los atributos obligatorios. Su grupo de usuarios comprueba el token de identificación del proveedor y la respuesta userInfo. Su grupo de usuarios escribe todas las notificaciones que coinciden con las reglas de asignación en los atributos de usuario del perfil de usuario del grupo de usuarios. Su grupo de usuarios hace caso omiso de los atributos que coinciden con una regla de asignación, pero no son obligatorios y no aparecen en las notificaciones del proveedor.