Spécification des clés API utilisateur

Pensez-vous qu’il serait judicieux de sauter les scripts javascript de détection lorsque quelqu’un utilise le point de terminaison

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

? Ils sont très probablement redirigés vers là depuis une application, donc vérifier si leur moteur javascript est à la hauteur a peu de sens et ne bloque que les utilisateurs qui souhaitent générer une clé d’api pour une utilisation dans l’application.

Mais vous devez toujours vous connecter pour que cela fonctionne

C’est le problème, lorsque user-api-key/new vous redirige vers une page de connexion, elle commence alors à vérifier votre navigateur et au lieu de permettre la connexion pour générer une clé d’API, elle se plaint que votre navigateur est trop ancien. Peut-être ignorer ces vérifications si l’utilisateur est ici uniquement pour générer une clé d’API ?

Oui, c’est le problème, c’est un peu une demande de connexion sans JavaScript, ce qui est incroyablement complexe étant donné l’énorme quantité d’options d’authentification que nous prenons en charge et les mesures de prévention du spam.

1 « J'aime »

Pas besoin d’être sans Javascript, les formulaires de connexion n’ont pas vraiment besoin de tous les artifices utilisés ailleurs sur le site ? Au moins pour le passage à l’authentification/oauth2_basic, cela ne semble pas nécessaire car 99% est fait avec des en-têtes et des redirections. J’ai une application sur SailfishOS qui fonctionne parfaitement avec les .json et le passage de la clé API, ce qui est génial car le navigateur là-bas est basé sur esr78 Firefox et est bloqué dans la plupart des instances Discourse, mais la seule façon d’obtenir une clé API semble être d’entrer manuellement une URL de plus de 200 caractères sur le bureau, puis de coller le code résultant au téléphone pour le décoder, absolument ridicule.

5 messages ont été déplacées vers un nouveau sujet : Les clés API utilisateur devraient utiliser le padding OAEP

Salut tout le monde. J’utilisais des clés API utilisateur pour me connecter à l’aide d’un client tiers. Cela fonctionnait très bien. Mais maintenant, je reçois un message d’erreur sur certains sites

Le message est

Oops
Le logiciel qui alimente ce forum de discussion a

Voulez-vous dire « se connecter » ? Je pense que Discourse Connect est probablement une meilleure façon de le faire, bien que je ne sache pas ce que vous faites réellement.

Vous devrez consulter les journaux pour obtenir plus d’informations sur l’erreur.

J’exécute une interface utilisateur personnalisée, j’ai donc besoin d’effectuer des actions pour le compte de l’utilisateur. Pour cela, j’utilise des clés d’API utilisateur.

Pour cela, j’utilise l’URL suivante :

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


PARAMÈTRES
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

Cela redirige vers /login, le navigateur appelle /session/csrf avec succès, aucun problème jusqu’à présent.

Cependant, lorsque le navigateur appelle /auth/oauth2_basic, j’obtiens une erreur 500.

La réponse est ce message d’erreur et aucune information supplémentaire.

Discourse hub effectue un flux d’authentification similaire mais cela fonctionne. Y a-t-il quelque chose que j’ai manqué ?

Y a-t-il quelque chose dans /logs ?

2 « J'aime »

Après quelques investigations, j’ai découvert que ce problème survenait parce que j’utilisais des clés de 4096 bits. Je les ai changées en 2048 et cela a commencé à fonctionner correctement.

Cette taille de clé est-elle une exigence ? Est-ce documenté quelque part ?

2 « J'aime »