Использование external_id для вызова API ответа

Возможно ли использовать external_id SSO для вызова API при ответе на пост, чтобы избежать необходимости каждый раз сначала определять имя пользователя по external_id?

Нет, это невозможно.

Однако вам не нужно определять его «каждый раз» — вы можете решить кэшировать его на стороне вызывающего.

Если пользователь A изменил имя в Discourse, а в этот же момент пользователь B также изменил имя, выбрав имя, которое ранее принадлежало пользователю A, может ли получение имени пользователя A из кэша привести к тому, что ответы пользователя A будут привязаны к пользователю B?

Да, хотя это звучит немного теоретически, это вполне возможно. Было бы лучше, если бы можно было аутентифицироваться по ID пользователя.

Настройте вебхук на событие user.updated, чтобы сбрасывать кэш для этого пользователя!

Да, это должно быть хорошим решением. Спасибо.
Но возможно ли, что из-за сетевых колебаний вебхук потеряет пакет, и кэш не обновится?
Хотя время жизни кэша (TTL) частично решает эту проблему, до истечения TTL всё ещё могут возникнуть сбои.
В конечном счёте, самым надёжным способом остаётся получение точного имени пользователя по external_id.
Конечно, это лишь мои теоретические предположения.

В данный момент это невозможно, но вы можете реализовать это самостоятельно с помощью патча, который изменит код аутентификации так, чтобы, например:

api-username: external_id:BB111

считалось эквивалентным:

api-username: bbaggins