User API keys specification

Как вы считаете, имеет ли смысл пропускать проверку detect-browser для JavaScript, когда пользователь обращается к конечной точке

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

? Скорее всего, они перенаправляются туда из приложения, поэтому проверка того, соответствует ли их движок JavaScript современным требованиям, не имеет особого смысла и лишь блокирует пользователей, которые хотят сгенерировать ключ API для использования внутри приложения.

Но для работы всё равно необходимо войти в систему

Да, в этом и проблема: когда редирект с user-api-key/new ведёт на страницу входа, система начинает проверку вашего браузера. Вместо того чтобы разрешить вход для генерации API-ключа, она жалуется на то, что браузер устарел. Может быть, стоит пропустить эти проверки, если пользователь зашёл исключительно для генерации API-ключа?

Да, это именно та проблема: речь идёт о способе входа без использования JavaScript. Это невероятно сложно, учитывая огромное количество поддерживаемых нами вариантов аутентификации и меры по борьбе со спамом.

1 лайк

Не обязательно делать его без JavaScript, просто формы входа не требуют всех этих наворотов, которые используются в других частях сайта? По крайней мере, для прохода через auth/oauth2_basic это, похоже, не нужно, так как 99% работы выполняется через заголовки и перенаправления. У меня есть приложение для SailfishOS, которое отлично работает с .json-файлами и передачей api-ключа. Это здорово, потому что браузер там основан на Firefox ESR78 и блокируется на большинстве инстансов Discourse, но единственный способ получить api-ключ — это вручную ввести URL длиной более 200 символов на десктопе, а затем вставить полученный код обратно на телефон для декодирования. Это абсолютно нелепо.

5 сообщений были перенесены в новую тему: Ключи API пользователей должны использовать OAEP-выравнивание

Всем привет. Я использовал пользовательские ключи API для входа через сторонний клиент. Раньше всё работало отлично. Но теперь на некоторых сайтах я получаю сообщение об ошибке:

Ой
Программное обеспечение, управляющее этим форумом, столкнулось с непредвиденной проблемой. Приносим извинения за неудобства.

Подробная информация об ошибке была зафиксирована в логах, и сгенерировано автоматическое уведомление. Мы разберёмся в этом.

Дальнейших действий с вашей стороны не требуется. Однако, если ошибка сохранится, вы можете предоставить дополнительные детали, включая шаги для воспроизведения проблемы, создав тему в разделе обратной связи сайта.

Произошли ли какие-либо изменения в этой функции в последних версиях?

Вы имеете в виду «вход в систему»? Думаю, что Discourse Connect, вероятно, более подходящий способ сделать это, хотя я не знаю, что именно вы делаете.

Вам нужно посмотреть логи, чтобы получить больше информации о том, в чём заключается ошибка.

Я запускаю пользовательский интерфейс, поэтому мне нужно выполнять действия от имени пользователя. Для этого я использую API-ключи пользователей.

Для этого я использую следующий 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

Где

ПАРАМЕТРЫ
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

Перенаправление происходит на /login, браузер успешно вызывает /session/csrf, пока проблем нет.

Однако, когда браузер вызывает /auth/oauth2_basic, я получаю ошибку 500.

Ответ содержит только это сообщение об ошибке без дополнительной информации.

Discourse hub использует похожий поток аутентификации, но он работает. Не упускаю ли я что-то?

Что-нибудь в /logs?

2 лайка

После небольшого расследования я выяснил, что проблема возникала из-за использования ключей размером 4096 бит. Я изменил их на 2048 бит, и всё заработало как надо.

Это требование к размеру ключа? Где-то это документировано?

2 лайка