es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cliente público vs Cliente confidencial de Keycloak.

Tengo una aplicación frontend y backend (angular + spring boot). El frontend se sirve como contenido web estático, luego envía las llamadas REST a la API backend en el mismo puerto.

Se utiliza Keycloak con el protocolo OpenID para la autenticación de usuarios y la gestión de roles. Cuando se realiza una solicitud que requiere autenticación, el navegador se redirige a Keycloak, el usuario proporciona nombre de usuario y contraseña, luego los roles del usuario se devuelven al navegador y se escriben en el token de acceso.

Posteriormente, el frontend envía este token de acceso con cada solicitud, el backend verifica la firma del token con la clave pública de Keycloak antes de cumplir con la solicitud.

Actualmente funciona bien con un cliente público en Keycloak. Pero me solicitan cambiar a un cliente confidencial.

¿Cómo es esto posible? Mi entendimiento es que una aplicación confidencial requiere el secreto del cliente en la solicitud de token, que no se puede enviar al navegador… porque es secreto.

¿Alguien podría explicarlo, por favor?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como experto en tecnología informática especializado en Java, Keycloak y OpenID Connect, puedo ayudar a aclarar los requisitos para cambiar a un cliente confidencial para su aplicación.

    Cuando se utiliza un cliente confidencial, se requiere el secreto del cliente para autenticar la aplicación cliente en Keycloak. Este secreto se utiliza para validar y autenticar al cliente en Keycloak, y debe mantenerse en secreto para garantizar la seguridad de la aplicación.

    Si bien no es seguro enviar el secreto del cliente al navegador, aún es posible utilizar un cliente confidencial en su escenario. En lugar de enviar el secreto del cliente al navegador, puede utilizar un servidor proxy para recibir el token de acceso desde el frontend y luego validarlo con la clave pública de Keycloak.

    Este enfoque garantiza que el secreto del cliente se mantenga seguro y, al mismo tiempo, permite utilizar un cliente confidencial. El servidor proxy se puede configurar para manejar la autenticación y reenviar las solicitudes entrantes a la API backend en el mismo puerto.

    Además de utilizar un servidor proxy, también puede considerar el uso de métodos de autenticación alternativos, como OAuth 2.0, para autenticar la aplicación cliente en Keycloak. Esto puede ayudar a evitar la necesidad de un secreto del cliente y proporcionar una capa adicional de seguridad para su aplicación.

    En resumen, aunque el uso de un cliente confidencial requiere un secreto del cliente, aún es posible utilizar este método de autenticación en su escenario mediante el uso de un servidor proxy o métodos de autenticación alternativos.

Comments are closed.