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.
-
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.
-
Se redirige al usuario al punto de conexión
authorization
del IdP OIDC. -
Una vez que el usuario se haya autentica, el IdP OIDC lo redirige a Amazon Cognito con un código de autorización.
-
Amazon Cognito intercambia el código de autorización con el proveedor de identidad OIDC para obtener un token de acceso.
-
También crea o actualiza la cuenta de usuario en el grupo de usuarios.
-
Además, otorga a la aplicación tokens de portador, que pueden incluir tokens de identidad, acceso y actualización:
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
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:
-
Comprueba que el proveedor haya firmado el token con un algoritmo del siguiente conjunto: RSA, HMAC y Elliptic Curve.
-
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ónjwks_uri
del proveedor. -
Compara la firma del token de identificación con la firma que espera en función de los metadatos del proveedor.
-
Compara la notificación
iss
con el emisor de OIDC configurado para el IdP. -
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 avisoaud
. -
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.