¿Cómo puedo pasar información personalizada de un autenticador de App Engine al Endpoint?

Me refiero a la increíble respuesta de @MinWan en esta publicaciónGoogle Cloud Endpoints y autenticación de usuario, donde describe una forma de agregar encabezados personalizados a una solicitud en los puntos finales de la nube de App Engine.

Queda claro que podemos agregar un encabezado personalizado y escribir un autenticador por cada servicio (por ejemplo, Google, Twitter, Facebook) contra el cual queremos autenticar, donde cada autenticador lee un encabezado específico y se autentica en el servicio. Si el token es válido, un servicio generalmente devuelve una respuesta con una dirección de correo electrónico o ID de usuario, más información adicional [A], a partir de la cual generamos un com.google.api.server.spi.auth.common.User, que luego se pasa al método de punto final como com.google.appengine.api.users.User.

Primera pregunta: ¿Por qué tenemos dos entidades de usuario diferentes, p. usuarios con diferentes espacios de nombres? Como parece, no se trata de subclases o superclases, por lo que posiblemente se emitan explícitamente detrás de escena.

Segunda pregunta: El problema que viene con la entidad de usuario emitida explícitamente y que no hay un campo personalizado donde pueda poner la información adicional [A] devuelta por el servicio, es que la información adicional se pierde. Dicha información adicional puede ser útil para hacer coincidir el usuario oauth2 del servicio externo con un usuario local o con los usuarios oauth2 devueltos por otros servicios.

Cualquier entrada? ¿Cuál es la forma sugerida de manejar múltiples servicios de autenticación?

Respuestas a la pregunta(2)

Su respuesta a la pregunta