Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

1.1K
Views
Cómo crear un cliente en Keycloak para usar con AWS Cognito Identity Federation

Tengo una base de usuarios con identidad y autenticación administrada por keycloak. Me gustaría permitir que estos usuarios inicien sesión y utilicen los servicios de AWS API Gateway con Cognito mediante una federación de OpenID Connect.

Falta algo de documentación de AWS sobre el uso de un proveedor de OpenID Connect. Encontré una referencia antigua usando SAML pero preferiría evitar esto y usar OpenID Connect.

Si alguien ha logrado esto, ¿le importaría escribir algunas instrucciones simples desde la perspectiva del administrador de keycloak?

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Respondiendo a mi propia pregunta para futuros buscadores según los consejos que he recibido de AWS Support:

La pregunta en sí se basó en un malentendido. AWS Cognito no autentica a los usuarios con Keycloak; la aplicación cliente lo hace.

Cognito Identity Federation consiste en otorgar acceso a los recursos de AWS mediante la creación de credenciales de acceso de AWS a una identidad con un token de un proveedor de identidad externo.

El cliente OpenID en keycloak es el mismo cliente que utiliza la aplicación del usuario final. Las URL de redirección envían al usuario de regreso a la aplicación, que luego pasa el token JWT a AWS para intercambiarlo por las credenciales de AWS.

Cognito se basa en que la aplicación cliente dirige primero al usuario al proveedor de autenticación de su elección (en este caso, Keycloak) y luego pasa el token de acceso de Keycloak a Cognito, que lo usa para 1) crear una identidad si es necesario, y 2) generar Credenciales de AWS para acceder al rol de AWS para usuarios "autenticados" en Cognito.

Un ejemplo usando la CLI de AWS

Requisito previo: la aplicación cliente obtiene el token de acceso JWT para el usuario final mediante cualquier método de autenticación OpenID

Cree o recupere una identidad de cognito:

 aws cognito-identity get-id --cli-input-json file://test.json

Devuelve la identidad:

 { "IdentityId": "ap-southeast-2:<identity_uuid>" }

(sustituya ap-southeast-2 en los ejemplos con su región local)

test.json contiene los detalles de la cuenta de AWS, el grupo de Cognito y el token de acceso JWT del usuario de Keycloak:

 { "AccountId": "123456789012", "IdentityPoolId": "ap-southeast-2:<cognito-identity-pool-uuid>", "Logins": { "keycloak.url/auth/realms/realmname": "<access_token_jwt>" } }

Luego, la aplicación puede usar esta identidad devuelta, junto con el token de acceso de JWT para obtener credenciales de AWS con las que consumir los servicios de AWS...

 aws cognito-identity get-credentials-for-identity --identity-id ap-southeast-2:<identity_uuid> --cli-input-json file://test2.json

Devuelve un AccessKeyId, un SecretKey y un AWS SessionToken junto con un tiempo de caducidad. Estos se pueden utilizar para acceder a los servicios de AWS según los permisos del rol autenticado que se estableció en la configuración del grupo de identidades federadas de Cognito:

 { "Credentials": { "SecretKey": "<secret_key>", "SessionToken": "<aws_cli_session_token>", "Expiration": 1567891234.0, "AccessKeyId": "<access_key>" }, "IdentityId": "ap-southeast-2:<identity_uuid>" }

El contenido de test2.json

 { "IdentityId": "ap-southeast-2:<identity_uuid>", "Logins": { "keycloak.url/auth/realms/realmname": "<keycloak_access_token_jwt>" } }

Espero que esto brinde contexto y asistencia a las personas que tropiecen con esta pregunta en el futuro.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!