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.
El punto final de redireccionamiento y autorización
El punto de conexión /oauth2/authorize
es un punto de conexión de redirección que admite dos destinos de redireccionamiento. Si incluyes un idp_identifier
parámetro identity_provider
o en elURL, redirigirá silenciosamente al usuario a la página de inicio de sesión de ese proveedor de identidad (IdP). De lo contrario, se redirige a la Punto de conexión Login con los mismos URL parámetros que incluiste en la solicitud.
El punto de conexión de autorización redirige a la interfaz de usuario alojada o a la página de inicio de sesión de IdP. El destino de una sesión de usuario en este punto de conexión es una página web con la que su usuario debe interactuar directamente en su navegador.
Para usar el punto de conexión de autorización, invoque el navegador de su usuario en /oauth2/authorize
con parámetros que proporcionan a su grupo de usuarios información sobre los siguientes detalles del grupo de usuarios.
-
El cliente de aplicación en el que desea iniciar sesión.
-
La devolución de llamada en la URL que quieres terminar.
-
Los ámbitos OAuth 2.0 que quieres solicitar en el token de acceso de tu usuario.
-
De manera opcional, el IdP de terceros que desea usar para iniciar sesión.
También puede suministrar los parámetros state
y nonce
que Amazon Cognito utiliza para validar las notificaciones entrantes.
GET /oauth2/authorize
El punto de enlace /oauth2/authorize
solo admite HTTPS
GET
. Por lo general, la aplicación inicia esta solicitud en el navegador del usuario. Solo puedes realizar solicitudes al /oauth2/authorize
punto final. HTTPS
Puede obtener más información sobre la definición del punto final de autorización en el estándar OpenID Connect (OIDC) en Authorization
Parámetros de solicitud
response_type
-
(Obligatorio) El tipo de respuesta. Debe ser
code
otoken
.Una solicitud exitosa con un
response_type
decode
devuelve una concesión de código de autorización. La concesión de un código de autorización es uncode
parámetro que Amazon Cognito añade a la redirección. URL Su aplicación puede intercambiar el código con el Punto de conexión de token para tokens de acceso, ID y actualización. Como práctica recomendada de seguridad, y para recibir tokens de actualización para sus usuarios, use un código de autorización de concesión en su aplicación.Una solicitud exitosa con un
response_type
detoken
devuelve una concesión de código de autorización. Una concesión implícita es un identificador y un token de acceso que Amazon Cognito añade a la redirección. URL Una concesión implícita es menos segura porque expone los tokens y la posible información de identificación a los usuarios. Puede desactivar la compatibilidad con las concesiones implícitas en la configuración del cliente de su aplicación. client_id
-
(Obligatorio) El ID del cliente de la aplicación.
El valor de
client_id
debe ser el ID de un cliente de aplicación del grupo de usuarios en el que se realiza la solicitud. El cliente de la aplicación debe admitir el inicio de sesión de los usuarios locales de Amazon Cognito o de al menos un IdP de terceros. redirect_uri
-
(Obligatorio) El URL lugar al que el servidor de autenticación redirige el navegador después de que Amazon Cognito autorice al usuario.
Un identificador uniforme de recursos de redireccionamiento (URI) debe tener los siguientes atributos:
-
Debe ser absolutoURI.
-
Debe haberlo registrado previamente URI con un cliente.
-
No puede incluir un componente fragmento.
Consulte OAuth2.0: Punto final de redirección.
Amazon Cognito requiere que su redireccionamiento URI utiliceHTTPS, excepto
http://localhost
, que puede configurar como devolución de llamada con fines de pruebaURL.Amazon Cognito también admite la devolución de llamadas a aplicaciones, como. URLs
myapp://example
-
state
-
(Opcional, recomendado) Cuando la aplicación añade un parámetro de estado a una solicitud, Amazon Cognito devuelve su valor a la aplicación cuando el
/oauth2/authorize
punto final redirige al usuario.Añada este valor a sus solicitudes para protegerse de los ataques CSRF
. No puede establecer el valor de un
state
parámetro en una JSON cadena URL codificada. Para pasar una cadena que coincida con este formato a unstate
parámetro, codifica la cadena en base64 y, a continuación, decodifícala en tu aplicación. identity_provider
-
(Opcional) Agrega este parámetro para omitir la interfaz de usuario alojada y redirigir al usuario a la página de inicio de sesión de un proveedor. El valor delidentity_provideres el nombre del proveedor de identidad (IdP) tal como aparece en el grupo de usuarios.
-
Para los proveedores sociales, puedes usar los valores de identity_provider
Facebook
,, yGoogle
.LoginWithAmazon
SignInWithApple
-
Para los grupos de usuarios de Amazon Cognito, utilice el valor.
COGNITO
-
Para SAML 2.0 y OpenID Connect (OIDC) proveedores de identidad (IdPs), utilice el nombre que asignó al IdP en su grupo de usuarios.
-
idp_identifier
-
(Opcional) Agregue este parámetro para redirigirlo a un proveedor con un nombre alternativo para el nombre identity_provider. Puede introducir identificadores para su SAML versión 2.0 y OIDC IdPs desde la pestaña Experiencia de inicio de sesión de la consola Amazon Cognito.
scope
-
(Opcional) Puede ser una combinación de cualquier ámbito reservado por el sistema o personalizado que esté asociado a un cliente. Los ámbitos deben estar separados por espacios. Los ámbitos reservados por el sistema son
openid
,email
,phone
,profile
yaws.cognito.signin.user.admin
. Todo ámbito utilizado debe estar asociado al cliente o se ignorará en el tiempo de ejecución.Si el cliente no solicita ningún ámbito, en el servidor de autenticación se utilizarán todos los ámbitos asociados al cliente.
Solo se devuelve un token de ID si se solicita el ámbito
openid
. El token de acceso solo se puede utilizar en grupos de usuarios de Amazon Cognito si se solicita el ámbitoaws.cognito.signin.user.admin
. Los ámbitosphone
,email
yprofile
solo se pueden solicitar si se solicita también el ámbitoopenid
. Estos ámbitos dictan las notificaciones que se incluyen en el token de ID. code_challenge_method
-
(Opcional) El protocolo de hash que utilizó para generar el desafío. PKCERFC
Define dos métodos, S256 y simple; sin embargo, el servidor de autenticación Amazon Cognito solo admite S256. code_challenge
-
(Opcional) El desafío de prueba del intercambio de códigos clave (PKCE) que generó a partir del.
code_verifier
Para obtener más información, consulte El uso PKCE en el código de autorización otorga.Obligatorio solo cuando se especifica un parámetro
code_challenge_method
. nonce
-
(Opcional) Un valor aleatorio que puedes añadir a la solicitud. El valor nonce que proporciona se incluye en el token de ID que emite Amazon Cognito. Para protegerse de los ataques de reproducción, su aplicación puede inspeccionar la reclamación de
nonce
en el token de identificación y compararlo con el generado. Para obtener más información sobre la reclamación denonce
, consulte ID token validation(Validación de token de ID) en el estándar de OpenID Connect. login_hint
-
Una solicitud de nombre de usuario que quieres pasar al servidor de autorización. Puede recopilar un nombre de usuario, una dirección de correo electrónico o un número de teléfono de su usuario y permitir que el proveedor de destino rellene previamente el nombre de inicio de sesión del usuario. Al enviar un
login_hint
parámetro y un númeroidp_identifier
oidentity_provider
parámetros aloauth2/authorize
punto final, la interfaz de usuario alojada rellena el campo del nombre de usuario con el valor de la sugerencia. También puede pasar este parámetro al valor del nombre de usuario Punto de conexión Login y rellenarlo automáticamente.Cuando su solicitud de autorización invoca una redirección a Google OIDC IdPs o a Google, Amazon Cognito añade
login_hint
un parámetro a la solicitud a ese autorizador externo. No puedes reenviar sugerencias de inicio de sesión a AppleSAML, Login With Amazon o Facebook (Meta) IdPs.
Ejemplos de solicitudes con respuestas positivas
Los siguientes ejemplos ilustran el formato de HTTP las solicitudes al /oauth2/authorize
punto final.
Concesión de código de autorización
Este es un ejemplo de solicitud de concesión de código de autorización.
Ejemplo: GET solicitud
La siguiente solicitud inicia una sesión para recuperar un código de autorización que el usuario pasa a la aplicación en el redirect_uri
destino. En esta sesión, se solicitan los ámbitos de los atributos de usuario y el acceso a las operaciones de autoservicio de Amazon CognitoAPI.
GET https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/authorize? response_type=code& client_id=
1example23456789
& redirect_uri=https://www.example.com
& state=abcdefg
& scope=openid+profile+aws.cognito.signin.user.admin
Ejemplo: respuesta
El servidor de autenticación de Amazon Cognito redirige a la aplicación con el código y el estado de autorización. El código de autorización es válido durante cinco minutos.
HTTP/1.1 302 Found
Location: https://www.example.com
?code=a1b2c3d4-5678-90ab-cdef-EXAMPLE11111&state=abcdefg
El código de autorización se otorga con PKCE
Este es un ejemplo de solicitud de concesión de un código de autorización con PKCE.
Ejemplo: GET solicitud
La siguiente solicitud agrega un code_challenge
parámetro a la solicitud anterior. Para completar el intercambio de un código por un token, debe incluir el code_verifier
parámetro en la solicitud al /oauth2/token
punto final.
GET https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/authorize? response_type=code& client_id=
1example23456789
& redirect_uri=https://www.example.com
& state=abcdefg
& scope=aws.cognito.signin.user.admin& code_challenge_method=S256& code_challenge=a1b2c3d4...
Ejemplo: respuesta
El servidor de autenticación redirige de nuevo a su aplicación con el código y el estado de autorización. El código y el estado deben devolverse en los parámetros de la cadena de consulta y no en el fragmento:
HTTP/1.1 302 Found
Location: https://www.example.com
?code=a1b2c3d4-5678-90ab-cdef-EXAMPLE11111&state=abcdefg
Concesión de token sin ámbito openid
Este es un ejemplo de solicitud que genera una concesión implícita y regresa JWTs directamente a la sesión del usuario.
Ejemplo: solicitud GET
La siguiente solicitud es para una concesión implícita de su servidor de autorización. El token de acceso de Amazon Cognito autoriza las operaciones de autoservicio. API
GET https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/authorize? response_type=token& client_id=
1example23456789
& redirect_uri=https://www.example.com
& state=abcdefg
& scope=aws.cognito.signin.user.admin
Ejemplo: respuesta
El servidor de autorización de Amazon Cognito redirige a la aplicación con el token de acceso. Dado que no se ha solicitado el ámbito openid
, Amazon Cognito no devuelve un token de ID. Además, Amazon Cognito no devuelve un token de actualización en este flujo. Amazon Cognito devuelve el token de acceso y el estado en el fragmento y no en la cadena de consulta:
HTTP/1.1 302 Found
Location: https://YOUR_APP/redirect_uri#access_token=ACCESS_TOKEN&token_type=bearer&expires_in=3600&state=STATE
Concesión de token con ámbito openid
Este es un ejemplo de solicitud que genera una concesión implícita y regresa JWTs directamente a la sesión del usuario.
Ejemplo: solicitud GET
La siguiente solicitud es para una concesión implícita de su servidor de autorización. El token de acceso de Amazon Cognito autoriza el acceso a los atributos del usuario y a las operaciones de autoservicio. API
GET https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/authorize? response_type=token& client_id=
1example23456789
& redirect_uri=https://www.example.com
& state=abcdefg
& scope=aws.cognito.signin.user.admin+openid+profile
Ejemplo: respuesta
El servidor de autorización redirige de nuevo a tu aplicación con el token de acceso y el token de identificación (porque el openid
alcance estaba incluido):
HTTP/1.1 302 Found
Location: https://www.example.com
#id_token=eyJra67890EXAMPLE&access_token=eyJra12345EXAMPLE&token_type=bearer&expires_in=3600&state=abcdefg
Ejemplos de respuestas negativas
Amazon Cognito podría denegar su solicitud. Las solicitudes negativas vienen con un código de HTTP error y una descripción que puede utilizar para corregir los parámetros de la solicitud. Los siguientes son ejemplos de respuestas negativas.
-
Si
client_id
yredirect_uri
son válidos, pero los parámetros de la solicitud no tienen el formato correcto, el servidor de autenticación redirige el error al del clienteredirect_uri
y agrega un mensaje de error a un parámetro. URL Los siguientes son ejemplos de un formato incorrecto.-
La solicitud no incluye ningún
response_type
parámetro. -
La solicitud de autorización proporcionó un
code_challenge
parámetro, pero no uncode_challenge_method
parámetro. -
El valor del
code_challenge_method
parámetro no lo esS256
.
A continuación se muestra la respuesta a un ejemplo de solicitud con un formato incorrecto.
HTTP 1.1 302 Found Location: https://client_redirect_uri?error=invalid_request
-
-
Si el cliente solicita
code
otoken
entraresponse_type
, pero no tiene permiso para estas solicitudes, el servidor de autorización de Amazon Cognito vuelveunauthorized_client
al del cliente de la siguienteredirect_uri
manera:HTTP 1.1 302 Found Location: https://client_redirect_uri?error=unauthorized_client
-
Si el cliente solicita un ámbito no válido, desconocido o con un formato incorrecto, el servidor de autorización de Amazon Cognito devuelve
invalid_scope
alredirect_uri
del cliente, tal y como se indica a continuación:HTTP 1.1 302 Found Location: https://client_redirect_uri?error=invalid_scope
-
Si se produce un error inesperado en el servidor, el servidor de autenticación vuelve
server_error
al servidor delredirect_uri
cliente. Como el error HTTP 500 no se envía al cliente, no se muestra en el navegador del usuario. El servidor de autorización devuelve el siguiente error.HTTP 1.1 302 Found Location: https://client_redirect_uri?error=server_error
-
Cuando Amazon Cognito se autentica mediante la federación con un tercero, Amazon IdPs Cognito puede experimentar problemas de conexión, como los siguientes:
-
Si se produce un tiempo de espera de conexión al solicitar un token desde el IdP, el servidor de autenticación redirecciona el error al
redirect_uri
del cliente como se muestra a continuación:HTTP 1.1 302 Found Location: https://client_redirect_uri?error=invalid_request&error_description=Timeout+occurred+in+calling+IdP+token+endpoint
-
Si se agota el tiempo de espera de la conexión al
jwks_uri
punto final para validar el token de identificación, el servidor de autenticación redirige con un error al servidor del cliente de la siguiente manera:redirect_uri
HTTP 1.1 302 Found Location: https://client_redirect_uri?error=invalid_request&error_description=error_description=Timeout+in+calling+jwks+uri
-
-
Al autenticarse mediante la federación a un tercero IdPs, es posible que los proveedores devuelvan respuestas de error. Esto puede deberse a errores de configuración o a otros motivos, como los siguientes:
-
Si se recibe una respuesta de error de otros proveedores, el servidor de autenticación redirige el error al
redirect_uri
del cliente como se muestra a continuación:HTTP 1.1 302 Found Location: https://client_redirect_uri?error=invalid_request&error_description=[IdP name]+Error+-+[status code]+error getting token
-
Si se recibe una respuesta de error de Google, el servidor de autenticación redirige el error al
redirect_uri
del cliente como se muestra a continuación:HTTP 1.1 302 Found Location: https://client_redirect_uri?error=invalid_request&error_description=Google+Error+-+[status code]+[Google-provided error code]
-
-
Cuando Amazon Cognito detecta una excepción de comunicación al conectarse a un IdP externo, el servidor de autenticación redirige con un error al del cliente con uno de los siguientes
redirect_uri
mensajes:-
HTTP 1.1 302 Found Location: https://client_redirect_uri?error=invalid_request&error_description=Connection+reset
-
HTTP 1.1 302 Found Location: https://client_redirect_uri?error=invalid_request&error_description=Read+timed+out
-