2016-05-16 4 views
1

Это сводит меня с ума полностьюAWS Апи-Gateway CORS вопрос о статусе 400

Im пытается вызвать апи-шлюз остальное обслуживание от углового приложение, которое я запретной от API-GATEWAY с IAM доступа. Поэтому мне нужно позвонить с помощью IAM-аутентификации. Im использует временные учетные данные IAM, которые я уже получил

Мой вызов службы не работает, если нет заголовка Access-Control-Allow-Origin. Когда я пытаюсь вызвать службу из почтового ящика, я не вижу требуемого заголовка ответа. На моем почтовом звонке я получаю статус 403, так как моя аутентификация действительно не удалась, но я все еще ожидал заголовок. Если я удалю аутентификацию IAM в методе, в котором он работает, я вернусь к строке ответа и заголовку, который ищет.

Что мне здесь не хватает? Разумеется, даже если моя аутентификация не удалась, я все равно должен вернуть этот заголовок, чтобы на самом деле увидеть сообщение, в котором говорится, что ваша аутентификация не удалась.

Любая помощь будет высоко ценится

Благодаря

+0

Новейшая вещь, которую я пытался, заключалась в создании мостовой службы api-gateway без аутентификации между моим вызовом и аутентифицированной службой. Отрицательный сценарий работает, если моя аутентификация не удалась, я получаю заголовок cors назад, но мой положительный сценарий не делает. Я получаю сообщение об ошибке: _ «Подписанная нами подпись запроса не соответствует подписи, которую вы предоставили. Проверьте свой секретный ключ доступа AWS и метод подписи. Подробнее см. В технической документации» _ – 3uPh0riC

ответ

0

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

+0

Спасибо, что я проверил, но это не так. Я могу на самом деле сделать вызов OPTIONS, и я возвращаю эти заголовки, но как только я вызываю свой метод POST, он не возвращается 'Access-Control-Allow-Headers → Content-Type, X-Amz-Date, Authorization, X- Api-Key, X-Amz-Security-Token Access-Control-Allow-Methods → POST, OPTIONS Access-Control-Allow-Origin → * ' – 3uPh0riC

+0

Это похоже на отказ от моей аутентификации. Чтобы проверить, я ввел свои данные ключа IAM администратора в почтальон и сделал запрос, и я правильно вернул заголовок. Когда я меняю цифру, чтобы сбой аутентификации я не делаю. Я, очевидно, все еще нуждаюсь в этом, потому что теперь я не могу видеть правильные ошибки, потому что все, что я вижу, это отказ CORS. – 3uPh0riC

+0

Это ограничение тока с поддержкой CORS. В настоящее время мы отслеживаем элемент в нашем отставании, чтобы улучшить это.На данный момент, если вызов не аутентифицируется, вы увидите ошибку CORS, а не ошибку проверки подлинности. –

1

От this link on the AWS forum оказывается, что существует открытая проблема, связанная именно то, что испытывает здесь им ... Не уверен, что если то, что им ищет в настоящее время возможно

+0

Просто отметив, что эта проблема была исправлена ​​с помощью новой функции в API Gateway: http://docs.aws.amazon.com/apigateway/latest/developerguide/customize-gateway-responses.html –

1

ли вы позволяете свою роль Cognito для доступа к API конечных точек ?

Вы должны использовать политику, подобную этому на роль Cognito:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Effect": "Allow", 
      "Action": [ 
       "execute-api:invoke" 
      ], 
      "Resource": [ 
       "arn:aws:execute-api:<API_REGION>:<ACCOUNT_ID>:<API_ID>/*" 
      ] 
     } 
    } 
} 

Если вы используете IAM проверку подлинности для конечной точки и, если вы не позволяете роль Cognito, чтобы получить доступ к вашему API, API Шлюз будет генерировать ответ 403. Этот ответ не определяется вашим определением API, поскольку запрос отклоняется шлюзом API, прежде чем он сможет добраться до точки обработки вашего API. Вот почему ваша конфигурация CORS не будет применяться.

Смежные вопросы