1

Я пытаюсь получить доступ к аутентифицированному шлюзу API POST с клиентом postman rest, но я получаю статус 403 с запрещенным сообщением.Аутентификация шлюза API AWS с AWS_IAM и ключом API от клиента REST Postman

{ "сообщение": "Forbidden" }

Я использую AWS Подпись аутентификации с Accesskey, SecretKey, AWS области и имя службы. Я не понимаю, почему это не позволяет моему отдыху позвонить, это как-то связано с моей партой AccessKey и SecretKey без авторизации? (Мой пользователь является администратором)

$curl = curl_init(); 

curl_setopt_array($curl, array(
    CURLOPT_URL => "https://xxxxxxxxxx.execute-api.us-west-2.amazonaws.com/dev/score", 
    CURLOPT_RETURNTRANSFER => true, 
    CURLOPT_ENCODING => "", 
    CURLOPT_MAXREDIRS => 10, 
    CURLOPT_TIMEOUT => 30, 
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, 
    CURLOPT_CUSTOMREQUEST => "POST", 
    CURLOPT_POSTFIELDS => "input1=1&input2=2", 
    CURLOPT_HTTPHEADER => array(
    "authorization: AAAA-AAAA-XXX123 Credential=XXXXXXXXXX/20160414/us-west-2/execute-api/aws4_request, SignedHeaders=content-length;content-type;host;x-amz-date, Signature=sdddddssdddddddddddddddddsdsdsdsdsdsdsdsdsdsd", 
    "cache-control: no-cache", 
    "content-type: application/javascript", 
    "host: xxxxxxxxxx.execute-api.us-west-2.amazonaws.com", 
    "postman-token: abf462fe-24ae-244d-ba8d-d3e953f0e712", 
    "x-amz-date: 20160414T084331Z" 
), 
)); 

$response = curl_exec($curl); 
$err = curl_error($curl); 

curl_close($curl); 

if ($err) { 
    echo "cURL Error #:" . $err; 
} else { 
    echo $response; 
} 

ответ

1

Это может быть несколько причин, не могли бы вы поделиться с образцом, где он не работает?

Пожалуйста, проверьте следующее:

  1. ли вы развернуть API?
  2. Имеет ли пользователь соответствующие разрешения? Вы можете использовать управляемую политику IAM «AmazonAPIGatewayInvokeFullAccess» или создать свой собственный. Пожалуйста, обратитесь к нашему documentation за более подробной информацией.

Бест,

Jurgen, API шлюза

+0

Я проверил разрешение с помощью симулятора, и действительно у пользователя есть полномочия для вызова api, и у меня также есть API-интерфейс развертывания. API работает отлично без аутентификации, но когда я добавляю аутентификацию с помощью IAM и API-ключа, я не могу получить доступ. Я уверен, что это что-то с auth, но я не могу его идентифицировать. PS: Я добавил код, о котором идет речь. – joev

+0

В последнее время возникли некоторые проблемы с авторизацией почтмана и AWS (см. Https://github.com/postmanlabs/newman/issues/360). Это была операция PATCH, хотя, не уверен, что это была одна и та же проблема с POST. Не могли бы вы попытаться обновить свой почтовый клиент? – Jurgen

+0

Я использую метод POST, а не метод PATCH, как упоминание в выпуске, и я с последней версией почтальона, который является v 4.1.3 – joev

3

Если вы используете ключ API, убедитесь, что вы установите "х-апи ключ" заголовок.

У меня также была такая же проблема, пока я не создал план использования и не связал план с этапом API и ключом API.

2

Если вы установите для параметра «API Key Required» значение true, проверьте ниже.

  1. Разверните свой API для обновления изменений.
  2. вы должны передать HTTP-заголовок «x-api-key» в API Gateway.
  3. Ключ API должен быть создан.
  4. Кроме того, вам необходимо проверить План использования ключа API на консоли API Gateway.
Смежные вопросы