Tengo una pregunta más sobre la seguridad de usar la API, ya que creo que me falta algún concepto trivial debido a mi falta de experiencia.
Tengo una implementación headless de Discourse para integrar en mi frontend y he habilitado con éxito el SSO para la autenticación de usuarios.
Mi entendimiento inicial era que estaba usando el SSO para autenticarme como el “usuario activo” para obtener datos específicos del usuario activo de la API. Ahora veo que eso no es del todo correcto.
Ahora veo que los datos que se devuelven parecen depender del ‘api-username’ pasado en la cabecera. Pero estoy usando una clave de API de administrador, por lo que creo que esto significa que puedo obtener los datos de cualquier usuario que quiera pasando el nombre de usuario correcto para “api-username”.
Entonces, mi pregunta se reduce a: parece que la API no introduce el concepto de “usuario activo” y tengo que ajustar el usuario activo recuperando el nombre de usuario por external_id y luego usándolo como api-username durante la sesión activa, ¿es correcto?
Si mi entendimiento es correcto, ¿no es fácil para un hacker simplemente modificar el api-username en la cabecera para recuperar discusiones de chat de cualquier usuario?
Cualquier información adicional será apreciada para ayudarme a entender. ¡Gracias!
Nunca deberías usar esa API desde un frontend porque en ese caso, de hecho, es un riesgo (en realidad, el riesgo es mucho mayor porque el hacker puede hacer cualquier cosa).
Deberías hacer esto desde el backend.
Si esa no es una opción, entonces deberías usar claves de API de usuario en su lugar.
Como una implementación headless, ejecutaré esto desde mi frontend. Por lo tanto, en este caso, parece que necesito dedicar tiempo a descifrar la discusión sobre este tema:
De manera similar a estas discusiones, estaría interesado en generar automáticamente la clave API de los usuarios utilizando mi acceso a la API de administrador. Sin embargo, en mi flujo, no querría que el usuario fuera redirigido a una nueva página para “aprobar” mi aplicación. O bien querré forzar la aprobación utilizando mi confiable clave API de administrador, o ¿hay alguna configuración que pueda deshabilitar para que no se requiera autenticación adicional para la nueva clave API de usuario que genero?