Конечная точка Cognito '/oauth2/token' не возвращает 'id_token' для предоставления кода авторизации с PKCE

Конечная точка Cognito '/oauth2/token' не возвращает 'id_token' для предоставления кода авторизации с PKCE, хотя в документации говорится, что он будет возвращен (Ссылка ). Он также должен вернуть id_token. Это нормально или мне нужно настроить больше? Я добавил содержимое проблемы git, открытой мной ниже, если это полезно ( Issue 7393)

Воспроизвести Шаги для воспроизведения поведения:

  1. Настройте пул пользователей с поддержкой размещенного пользовательского интерфейса.
  2. Перейдите в размещенный пользовательский интерфейс и завершите вход
  3. Пользователь будет перенаправлен на URL-адрес «redirectSignIn».
  4. Событие Hub.listen('auth') запускается с сообщением об ошибке «Ошибка входа в систему: требуется информация об имени пользователя и пуле».
  5. Проверьте сеанс на наличие токена ID
  6. Проверьте запрос кода, чтобы получить токены (/oauth2/token request)
  7. У обоих нет токена ID. /oauth2/token возвращает только access_token, expires_in, refresh_token и token_type

Ожидаемое поведение Он также должен возвращать id_token

Фрагмент кода

   import React, {useEffect, useState} from 'react';
   import { Amplify, Auth, Hub  } from 'aws-amplify';
   import {AmplifyConfig} from '../../config/amplifyConfig';
   Amplify.configure({
      Auth: AmplifyConfig.auth
   });
   const AuthorizePage = (props: any) => {
   const [user, setUser] = useState(null);
   useEffect(() => {
        Hub.listen('auth', ({ payload: { event, data } }) => {
        switch (event) {
            case 'signIn':
            case 'cognitoHostedUI':
                getUser().then(userData => setUser(userData));
                break;
            case 'signOut':
                setUser(null);
                break;
            case 'signIn_failure':
            case 'cognitoHostedUI_failure':
                console.info('Sign in failure', data);
                break;
        }
        });
    
        getUser().then(userData => setUser(userData));
    }, []);
    
    function getUser() {
        return Auth.currentAuthenticatedUser()
        .then(userData => userData)
        .catch(() => console.info('Not signed in'));
    }

    return (
        <div className = "menu-card-filter--items" data-id = "aperitif">
            <span>
                Authorizing
            </span>
        </div>
    )
}

export default AuthorizePage;

Скриншоты

Запрос https://user-images.githubusercontent.com/12485276/101932415-bccab580-3c00-11eb-8cde-222d72f0d956.png

Ответ https://user-images.githubusercontent.com/12485276/101932467-d3710c80-3c00-11eb-9d3b-778faee43fa4.png

Что настроено?

  Auth: {
  mandatorySignIn: true,
  region: "******-*",
  userPoolId: "**-******-*_*******",
  userPoolWebClientId: "**********************",
  oauth: {
    domain: "**********************.amazoncognito.com",
    scope: [
      "phone",
      "email",
      "profile",
    ],
    redirectSignIn: "http://localhost:3000/authorize",
    redirectSignOut: "http://localhost:3000/logout",
    responseType: "code"
  }
}
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
0
1 820
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Добавьте область «openid» в список областей в вашей конфигурации аутентификации.

Область openid возвращает все пользовательские атрибуты в токене ID, которые доступны для чтения клиентом. Токен ID не возвращается, если область openid не запрошена клиентом.

https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-app-idp-settings.html здесь

Добавление «openid» в область действия сработало. Большое спасибо.

Sooraj L V 15.12.2020 10:10

Другие вопросы по теме