Я ссылаюсь на замечательный ответ @MinWan на этот пост Google Cloud Endpoints и аутентификацию пользователя, где он описывает способ добавления пользовательских заголовков к запросу против облака App Engine Endpoints.
Понятно, что мы можем добавить пользовательский заголовок и написать аутентификатор для каждой службы (например, Google, Twitter, Facebook), против которой мы хотим подтвердить, где каждый аутентификатор читает конкретный заголовок и аутентифицируется против этой службы. Если токен действителен, служба обычно возвращает ответ с адресом электронной почты или идентификатором пользователя, а также дополнительную информацию [A], из которой мы создаем com.google.api.server.spi.auth.common.User, который позже передается в метод конечной точки, как com.google.appengine.api.users.User.
Первый вопрос: почему у нас есть два разных пользовательских объекта, например. пользователей с разными пространствами имен? По-видимому, это не суб/суперклассы, поэтому они, возможно, явно скрыты за кулисами.
Второй вопрос: проблема, связанная с явно выраженным сущностью пользователя, и что нет специального поля, где я мог бы добавить дополнительную информацию [A], возвращаемую службой, заключается в том, что дополнительная информация теряется. Такая дополнительная информация может быть полезна для сопоставления пользователя внешней службы oauth2 с локальным пользователем или с oauth2 пользователями, возвращаемыми другими службами.
Любой вход? Каков предложенный способ обработки нескольких служб аутентификации?