декодирование Firebase idToken в Google App Engine - PullRequest
0 голосов
/ 04 мая 2018

Мои пользователи Firebase отправляют запросы на мой API-сервер. Я проверяю их, используя правила безопасности в конечных точках Google Cloud. Я извлекаю их ID пользователя без использования SDK администратора в Google App Engine.

Обычно Google предлагает проверять входящие токены id для запроса HTTPS с помощью этого кода в своем примере код Firebase Cloud Functions :

  admin.auth().verifyIdToken(idToken).then((decodedIdToken) => {
    console.log('ID Token correctly decoded', decodedIdToken);
    req.user = decodedIdToken;
    return next();
  }).catch((error) => {
    console.error('Error while verifying Firebase ID token:', error);
    res.status(403).send('Unauthorized');
  });

Однако, в примере кода Google App Engine , Google декодирует токен без SDK администратора:

let authUser = { id: 'anonymous' };
const encodedInfo = req.get('X-Endpoint-API-UserInfo');
if (encodedInfo) {
  authUser = JSON.parse(Buffer.from(encodedInfo, 'base64'));
}

Я использую конечные точки Google Cloud для защиты своего API, размещенного на Google App Engine. Я установил безопасность на облачных конечных точках, чтобы разрешить только пользователям Firebase доступ к маршрутам, однако я хочу, чтобы пользователи имели доступ только к своим собственным данным, поэтому мне нужно декодировать их токен id, чтобы получить их userID. Мне было интересно, обрабатывает ли Cloud Endpoints аутентификацию здесь. Нужно ли, чтобы SDK администратора проверял токен? или простое декодирование в примере Google достаточно безопасно, потому что облачные конечные точки уже заботятся о проверке idToken?

1 Ответ

0 голосов
/ 04 мая 2018

Admin SDK делает то же, что и прокси-сервер конечных точек при проверке токена. Прокси-сервер просто передает проверенный токен. Пока прокси конечных точек остается перед вашим приложением, вы можете просто декодировать токен X-Endpoint-API-UserInfo.

...