Como posso passar informações personalizadas de um autenticador do Google App Engine para o endpoint?

Estou referenciando a incrível resposta de @MinWan neste postPontos de extremidade do Google Cloud e autenticação do usuário, onde ele descreve uma maneira de adicionar cabeçalhos personalizados a uma solicitação nos pontos de extremidade de nuvem do App Engine.

Torna-se claro que podemos adicionar um cabeçalho personalizado e escrever um autenticador para cada serviço (por exemplo, Google, Twitter, Facebook) no qual queremos autenticar, onde cada autenticador lê um cabeçalho específico e se autentica no serviço. Se o token for válido, um serviço normalmente retorna uma resposta com um endereço de e-mail ou ID do usuário, além de algumas informações adicionais [A], das quais geramos um com.google.api.server.spi.auth.common.User, que é posteriormente passado para o método do nó de extremidade como com.google.appengine.api.users.User.

Primeira pergunta: por que temos duas entidades de usuário diferentes, por exemplo usuários com diferentes namespaces? Como parece, essas não são sub / superclasses, então elas podem ser explicitamente expressas nos bastidores.

Segunda pergunta: O problema que vem com a entidade do usuário explicitamente convertida e que não existe um campo personalizado onde eu possa colocar as informações extras [A] retornadas pelo serviço, é que as informações extras são perdidas. Essas informações extras podem ser úteis para corresponder o usuário oauth2 do serviço externo a um usuário local ou aos usuários oauth2 retornados por outros serviços.

Alguma entrada? Qual é a maneira sugerida de lidar com vários serviços de autenticação?

questionAnswers(2)

yourAnswerToTheQuestion