¿Cómo manejar caracteres no ASCII en la cabecera Api-Username?

Hola,

Estoy integrando con la API de Discourse usando RestSharp y me encuentro con un problema con los nombres de usuario que contienen caracteres no ASCII (específicamente umlauts alemanes). Necesito suplantar a un usuario con el nombre de usuario foö (contiene ö).

Al enviar el nombre de usuario sin procesar en la cabecera Api-Username, recibo: Request headers must contain only ASCII characters (Las cabeceras de la solicitud deben contener solo caracteres ASCII).

Al codificar la URL del nombre de usuario (Uri.EscapeDataString("foö")fo%C3%B), la autenticación falla con: {"errors":["Du bist nicht berechtigt, die angeforderte Ressource anzuzeigen. Der API-Benutzername oder -Schlüssel ist ungültig."],"error_type":"invalid_access"} (acceso denegado / usuario no existente).

Estoy utilizando una clave de API con privilegios de administrador. Endpoint: POST /posts.json para crear temas en nombre de los usuarios.

¿Cuál es la forma correcta de pasar nombres de usuario con caracteres no ASCII en la cabecera Api-Username? ¿Debería:

  1. Usar un método de codificación diferente?
  2. Usar un ID de usuario en su lugar (si es así, ¿qué nombre de cabecera)?
  3. ¿Algo completamente diferente?

¡Gracias por cualquier orientación!

1 me gusta

Buen apunte @xbd, esto se solucionará con

Pero mientras tanto…

… puedes usar el ID de usuario (de hecho, es preferible al nombre de usuario si lo tienes) a través del encabezado Api-User-Id

curl -X GET "https://tu-discourse.com/admin/users.json" \
  -H "Api-Key: tu-api-key" \
  -H "Api-User-Id: 123"

3 Me gusta