web-dev-qa-db-ja.com

API Gatewayへのアクセス中に認証トークンがありませんか?

AWS API Gatewayを介してLambda関数を呼び出そうとしています。認証タイプNONEを指定すると、正常に機能しますが、APIが公開され、URLを持つすべてのユーザーが私のAPIにアクセスできます。 API呼び出しを安全にするために、認証タイプAWS_IAMを使用しており、AmazonAPIGatewayInvokeFullAccessポリシーもユーザーにアタッチしていますが、このエラーが発生します。

{ message: "Missing Authentication Token"}

ここで何が欠けているのか分かりません。

38
umer

APIリンクに直接アクセスしようとしていると思いますが、APIはIAMロールを使用して保護されており、AWS認証、つまりアクセスキーとシークレットキーを提供する必要があるため、これは機能しません。

Postman Chrome拡張機能を使用してAPIをテストします。 http://docs.aws.Amazon.com/apigateway/latest/developerguide/how-to-use-postman-to-call- api.html

21
saddam

私は愚かな理由で時間を失いました:

ステージを作成すると、表示されるリンクにはURLのリソース部分が含まれません。

API URL:https://1111.execute-api.us-east-1.amazonaws.com/dev

API +リソースURLhttps://1111.execute-api.us-east-1.amazonaws.com/dev/get-リスト

/ get-listがありませんでした

そしてもちろん、メソッドの構成が次のようになっていることを確認する必要があります。

enter image description here

同じ問題が発生したばかりで、リソースが見つからない場合にもこのメッセージが表示されるようです。

私の場合、APIを更新しましたが、再デプロイするのを忘れていました。この問題は、更新されたAPIを私のステージにデプロイした後に解決されました。

8
Nicholas

(2019年4月現在)AWS API Gatewayはさまざまな理由でこの例外をスローします-主に、API Gatewayがデプロイされていないために、または特定の場合に、API Gatewayが到達できないエンドポイントに到達した場合HTTPメソッドはサポートされていません。

一般的なHTTP 403 Forbiddenの代わりに、ゲートウェイがHTTP 405 Method not supportedやHTTP 404 not foundなどのより適切なエラーコードを送信することを望みます。

4
TechiRik

リソースを作成してから、その中にメソッドを作成してください。それが私にとっての問題でした。ありがとう

enter image description here

4

ドキュメントでこれを見つけました:

AWS_IAM認証が使用された場合、署名バージョン4プロトコルを使用してリクエストに署名します。

署名バージョン4を使用した署名要求


APIのSDKを生成することもできます。

API GatewayでAPIのSDKを生成する方法

選択したプラットフォーム用のSDKを生成すると、ステップ6で、AWS認証情報を使用している場合、APIへのリクエストに署名することが記載されています。

  1. API Gatewayで生成されたSDKをAWS認証情報で初期化するには、次のようなコードを使用します。 AWS認証情報を使用する場合、APIへのすべてのリクエストは署名されます。つまり、リクエストごとに適切なCORS Acceptヘッダーを設定する必要があります。

    var apigClient = apigClientFactory.newClient({
      accessKey: 'ACCESS_KEY',
      secretKey: 'SECRET_KEY',
    });
    
4
theJasonHall

AWS_IAM認証を有効にする場合、 AWS署名バージョン4 を使用してAWS認証情報でリクエストに署名する必要があります。

:AWSコンソールへのサインインは、APIに対するブラウザーのリクエストに自動的にサインインしません。

3
Bob Kinney

まず、lamda関数で作成したAPIがAWSプロジェクトに登録されているかどうかを確認します。そのためには、AWSコンソールのAPIゲートウェイに移動します。登録されていない場合は登録してください。これがこの問題の主な原因です。

aws.export.jsファイルでも、API ['/items']に対応するパスがあることがわかります。

APIはそこに存在する必要があります。存在しない場合、リクエストにセキュリティトークンが追加されません。これを行うには、コンソールのプロジェクトクラウドロジックに登録するだけです。

そこにある場合は、上記のソリューションを使用してください
http://docs.aws.Amazon.com/apigateway/latest/developerguide/how-to-use-postman-to-call-api.html

0

間違ったAPIを呼び出しているときにこのメッセージが表示されることがあります

aPIエンドポイントを確認してください

0
HeshamSalama