AWS AppSync - неавторизованное исключение - PullRequest
0 голосов
/ 06 октября 2018

Я начал использовать AWS AppSync и столкнулся с проблемой разрешений.

Я использовал AppSync для создания таблицы DynamoDB для моих данных и настроил авторизацию для использования с Cognito User Pools, которые я уже создал.

Я установил действие по умолчанию на ALLOW который в соответствии с документацией AWS - https://docs.aws.amazon.com/appsync/latest/devguide/security.html#amazon-cognito-user-pools-authorization - должен позволять публичному доступу запускать любой запрос / мутацию / подписку, определенный в моей схеме по умолчанию.

В приведенной выше документации также сказано, что ограничение доступа осуществляется путем добавления @aws_auth к моим определениям типов.Который я еще не добавил.

И вот что я хочу: я хочу, чтобы мои запросы были общедоступными - не нужно добавлять директиву @aws_auth - и мои мутации должны быть ограничены группой администраторов внутримой пул пользователей Cognito.Таким образом, при тестировании запроса я должен иметь возможность возвращать мне данные, не выполняя вход в систему.

Однако при попытке выполнить какие-либо тестовые запросы в консоли AppSync я получаю следующее сообщение об ошибке:

{
  "errors": [
    {
      "errorType": "UnauthorizedException",
      "message": "Unable to parse JWT token."
    }
  ]
}

Очевидно, это связано с тем, что вы не вошли в Cognito.

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

Просмотр кода для моих запросов, типов и распознавателейЯ не вижу никакой разницы в том, как они написаны.Роль IAM, разрешающая доступ к моей таблице DynamoDB, также остается прежней и к ней не применяются никакие ограничения.

Что происходит?Есть ли ошибка в AppSync, или я что-то здесь упускаю?

Пожалуйста, дайте мне знать.Спасибо

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Вы говорите в консоли "Запросы"?Даже если вы вошли в свою учетную запись AWS и перейдете в консоль AWS AppSync Queries, вам все равно придется входить отдельно как пользователь cognito.Нажмите кнопку «Войти с помощью пользовательских пулов».

enter image description here

Оттуда просто введите информацию о пользователе Cognito, которого вы уже создали, и он будет имитироватьвход в систему для тестирования.Вы можете найти свой clientId в файле aws-exports.js в вашем проекте в строке: "aws_user_pools_web_client_id".

Надеюсь, это поможет!

0 голосов
/ 02 ноября 2018

Я думаю, что срок действия вашего ключа API истек. Итак, goto - APIs -> выберите ваш AppSync -> перейти к настройке -> выберите ключи API -> затем Edit -> теперь вы находитесь в разделе «Настройка ключа API и изменениеДата окончания срока."-> Выбрать срок действия Выберите, когда срок действия этого ключа API истечет, вы можете выбрать его на 1 год с даты создания новых ключей API.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...