Как получить idtoken из AWS Cognito, вошедшего через Google/Fedarated Login

Я создал приложение, в котором пользователи могут регистрироваться на моем сайте/веб-приложении. Где

A.) Пользователь может либо присоединиться к сайту, зарегистрировав свою комбинацию электронной почты и пароля, и эти пользователи будут зарегистрированы в пуле пользователей Cognito.

B.) Пользователь может присоединиться к сайту, войдя в систему через Google/Facebook.

Маркированный пункт A работает, как и ожидалось. Пользователь отправит свое имя пользователя и пароль, он сможет войти в систему и получит токен идентификатора, токен доступа и другую информацию, необходимую в качестве ответа (я использую aws amplify, где он заменил библиотеки javascript cognito). Теперь, когда эти пользователи получают доступ к защищенному ресурсу на шлюзе API с включенным cognito_authorizer, они просто переходят

"Носитель" И они смогут получить доступ

Где находится ID Token.

Теперь о случае Б.

Теперь я могу войти в систему через социальный провайдер. Мне удалось настроить все необходимые конфигурации как в консоли разработчика Google, так и зарегистрировать Google как федеративные объекты.

Теперь, благодаря aws amplify, я могу выполнить федеративный вход, передав токен id и значение expires_at, которое я получил от входа в Google.

Однако единственными значениями, которые я могу получить в ответ от cognito, являются CognitoIdentityCredentials (https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CognitoIdentityCredentials.html)

Нет токена доступа, токена обновления и другой необходимой информации.

Вопрос в том. Возможно ли для федеративного входа получить токен доступа и идентификатор idtoken, сгенерированный cognito, и использовать этот токен для передачи в качестве заголовка всякий раз, когда я выполняю запрос, где ресурс имеет cognito_authorizer для пользователей, которые присоединились к моему сайту через социальный вход? Или я пропустил определенные шаги для выполнения федеративного входа в систему, который вернет idtoken и токен доступа, который генерируется cognito?

Вот пример кода, который я использую

    const profile = res.getBasicProfile();
    const { id_token, expires_at } =  res.getAuthResponse();
    const user = {
      email: profile.getEmail(),
      name: profile.getName()
    };
    console.log(id_token);
    Auth.federatedSignIn(
      // Initiate federated sign-in with Google identity provider 
      'google',
      { 
          // the JWT token
          token: id_token, 
          // the expiration time
          expires_at 
      },
      // a user object
      user
  ).then((a) => {
      // ...location.reload();
      console.log(a);
      console.log(Auth.currentUserPoolUser());
  });

И это только то значение, которое я получаю.введите здесь описание изображения


person KyelJmD    schedule 20.04.2018    source источник
comment
Я не могу прочитать все, что вы там выводите, но, возможно, мой ответ на аналогичную проблему здесь полезен. stackoverflow.com/a/50111152/1732297   -  person honkskillet    schedule 01.05.2018