Especificación de claves API de usuario

¿Crees que tendría sentido omitir los scripts de detección de navegador cuando alguien usa el endpoint

https://sitename.com/user-api-key/new

? Lo más probable es que se redirijan allí desde una aplicación, por lo que comprobar si su motor de javascript está a la altura tiene poco sentido y solo bloquea a los usuarios que desean generar una clave de API para uso dentro de la aplicación.

Pero todavía necesitas iniciar sesión para que funcione

Sí, ese es el problema, cuando user-api-key/new te redirige a una página de inicio de sesión, comienza a verificar tu navegador y, en lugar de permitir el inicio de sesión para generar una clave de API, se queja de que tu navegador es demasiado antiguo. ¿Quizás omitir esas verificaciones si el usuario está aquí solo para generar una clave de API?

Sí, ese es el problema, es una forma de iniciar sesión sin JavaScript, lo cual es increíblemente complejo dada la enorme cantidad de opciones de autenticación que admitimos y las medidas de prevención de spam.

1 me gusta

No necesita ser sin javascript, ¿los formularios de inicio de sesión realmente no necesitan todos los adornos que se usan en otras partes del sitio? Al menos para el paso a través de auth/oauth2_basic no parece ser necesario, ya que el 99% se hace con encabezados y redirecciones. Tengo una aplicación en SailfishOS que funciona perfectamente con los .json y pasando la api-key, lo cual es genial ya que el navegador allí se basa en esr78 firefox y se bloquea en la mayoría de las instancias de discourse, pero la única forma de obtener una api-key parece ser ingresando manualmente una URL de más de 200 caracteres en el escritorio, luego pegando el código resultante en el teléfono para decodificarlo, absolutamente ridículo.

5 publicaciones se dividieron en un nuevo tema: Las claves API de usuario deberían usar el relleno OAEP

Hola chicos. Estaba usando claves de API de usuario para iniciar sesión con un cliente de terceros. Solía funcionar bien. Pero ahora estoy recibiendo un mensaje de error en algunos sitios

El mensaje es

Oops
El software que impulsa este foro de discusión encontró un problema inesperado. Lamentamos las molestias.

Se registró información detallada sobre el error y se generó una notificación automática. Le echaremos un vistazo.

No es necesaria ninguna otra acción. Sin embargo, si la condición de error persiste, puede proporcionar detalles adicionales, incluidos los pasos para reproducir el error, publicando un tema de discusión en la categoría de comentarios del sitio.

¿Hubo algún cambio en esta función en las últimas versiones?

¿Te refieres a “iniciar sesión”? Creo que Discourse Connect es probablemente una mejor manera de hacerlo, aunque no sé qué es lo que realmente estás haciendo.

Necesitarás revisar los registros para obtener más información sobre cuál es el error.

Estoy ejecutando una interfaz de usuario personalizada, por lo que necesito realizar acciones en nombre del usuario. Para ello, utilizo claves API de usuario.

Para ello, estoy utilizando la siguiente URL:

https://discussion.fedoraproject.org/user-api-key/new?auth_redirect=discourse%3A%2F%2Fauth_redirect&application_name=DisCorkie&client_id=019695ed-8b7e-71b1-b55e-7efe8be1e9ae&scopes=read%2Cwrite%2Cnotifications%2Cpush%2Csession_info&push_url=https%3A%2F%2Fherxbktlunuawewahana.supabase.co%2Ffunctions%2Fv1%2Fdiscourse-webhook&public_key=-----BEGIN+PUBLIC+KEY-----%0AMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAkD%2BNgNuAMv2ZSSR95V1B%0Afla9n3HbCPxAFB5%2B%2BitC9hlWEOfXZPToWAax5DuNUitzikLVWrldyRe%2BfgtS5F3Q%0AGvuzCtnFwyBNoIkuUva8uCzQ4K7T9RgnWIIfNsx2ONuk2GLhEeLUgb46F8VULbD3%0A4eExqEYoGK7tBxr3%2FnVYO%2FogOaibzhoZRiSh69gq6ptXWN9Pka%2Fb3%2Fp2hWF5MSwG%0AK39LiZKOzaga%2BsA0lA0BgdAw7rvnUBfpikL33mqtEJ6JDPhG5KIvBxY2m18T63cX%0AKakxrmZzWwibN%2Bzboe51Z49gtxJIiybaj5Yn7izPj39DKwiv5k%2FaSWFAe8FO0doQ%0AxVoh9qVhlvPq3DdLhcjC0djVNti3X%2BYC2bwUDSp%2BFhrLh%2BsYribCAp6P8TyZ5TZy%0Aw0WnDCatK%2FzPq53Fja2OUa5N43Zr4rSiyQMSdBaeOJwF33nOAHwztkDwOJvSh6fx%0Ag2mTR15Qe%2FRh6yY4fB610mcut%2BBU1oV4SEbxHYyroTaS06oO6k4EmvgJTiWK%2BVVC%0AfMGgFvoPXktKckK0q7xj32PiSTVlYURb27ap7yAHzFKePYkJdo0Sd3Jzghe1RdSg%0A4teQs4VecqIe%2Bv6p7BurFgwlKZyWN0n89u8%2BXihwwwOcVp1UHblqbl%2FKYi5%2BgK6O%0AyahsLRGMGllNIsqarYCZ9nkCAwEAAQ%3D%3D%0A-----END+PUBLIC+KEY-----%0A&nonce=-1646128802

Donde:

PARÁMETROS
auth_redirect: discourse://auth_redirect
application_name: DisCorkie
client_id: 019695ed-8b7e-71b1-b55e-7efe8be1e9ae
scopes: read,write,notifications,push,session_info
push_url: https://herxbktlunuawewahana.supabase.co/functions/v1/discourse-webhook
public_key:
-----BEGIN PUBLIC KEY-----
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAkD+NgNuAMv2ZSSR95V1B
fla9n3HbCPxAFB5++itC9hlWEOfXZPToWAax5DuNUitzikLVWrldyRe+fgtS5F3Q
GvuzCtnFwyBNoIkuUva8uCzQ4K7T9RgnWIIfNsx2ONuk2GLhEeLUgb46F8VULbD3
4eExqEYoGK7tBxr3/nVYO/ogOaibzhoZRiSh69gq6ptXWN9Pka/b3/p2hWF5MSwG
K39LiZKOzaga+sA0lA0BgdAw7rvnUBfpikL33mqtEJ6JDPhG5KIvBxY2m18T63cX
KakxrmZzWwibN+zboe51Z49gtxJIiybaj5Yn7izPj39DKwiv5k/aSWFAe8FO0doQ
xVoh9qVhlvPq3DdLhcjC0djVNti3X+YC2bwUDSp+FhrLh+sYribCAp6P8TyZ5TZy
w0WnDCatK/zPq53Fja2OUa5N43Zr4rSiyQMSdBaeOJwF33nOAHwztkDwOJvSh6fx
g2mTR15Qe/Rh6yY4fB610mcut+BU1oV4SEbxHYyroTaS06oO6k4EmvgJTiWK+VVC
fMGgFvoPXktKckK0q7xj32PiSTVlYURb27ap7yAHzFKePYkJdo0Sd3Jzghe1RdSg
4teQs4VecqIe+v6p7BurFgwlKZyWN0n89u8+XihwwwOcVp1UHblqbl/KYi5+gK6O
yahsLRGMGllNIsqarYCZ9nkCAwEAAQ==
-----END PUBLIC KEY-----
nonce:-1646128802

Redirige a /login, el navegador llama a /session/csrf con éxito, hasta ahora no hay problema.

Sin embargo, cuando el navegador llama a /auth/oauth2_basic, obtengo un 500.

La respuesta es este mensaje de error y no hay información adicional.

Discourse hub realiza un flujo de autenticación similar pero funciona. ¿Hay algo que me esté perdiendo?

¿Hay algo en /logs?

2 Me gusta

Después de investigar un poco, descubrí que este problema ocurría porque estaba usando claves de 4096 bits. Las cambié a 2048 y empezó a funcionar correctamente.

¿Es este tamaño de clave un requisito? ¿Está documentado en alguna parte?

2 Me gusta