RocketChatからOutgoing Webhookで呼び出されたAPI Gatewayでtokenをリクエスト検証する
本来はWAFでやったほうがよさそうですが、追加料金を発生させたくない場合にAPI Gatewayだけで検証してみました。
目次
RocketChatの設定
RocketChatのOutgoing Webhookでトークンを設定しました。
このトークンはリクエスト本文に含まれてPOSTされます。
API Gatewayの設定
APIのモデルを作成しました。
- RocketChatToken
|
1 2 3 4 5 |
{ "type" : "string", "enum" : [ "**********" ] } |
トークンの値です。
- RocketChatTokenCheck
|
1 2 3 4 5 6 7 8 9 10 |
{ "type" : "object", "properties" : { "token" : { "$ref":"https://apigateway.amazonaws.com/restapis/1j23j4k5j/models/RocketChatToken" } }, "required":["token"] } |
本文に含まれるキーから値を参照しています。
APIリソースのメソッドリクエストの設定で、リクエストの検証を本文にして、作成したモデルを指定しました。
検証のテスト
RocketChatから投稿してAPIにPOSTしてみます。
API GatewayではCloudWatch Logsへの出力を設定しています。
Method request body before transformations:
の次に
Request validation succeeded for content type application/json
のログが出力されていました。
成功しました。
検証に失敗するテストのために、POSTMANから適当なトークンの値でPOSTしてみました。
Request body does not match model schema for content type application/json: [instance value (“abcdefghi”) not found in enum (possible values: [“***********”])]
このログが出力されていました。
値が違ったので400 Bad Requestエラーになりました。
requiredを指定しているのでtokenキーが本文にない場合もエラーになります。
最後までお読みいただきましてありがとうございました!
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。
「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。
「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。
「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
「AWSではじめるLinux入門ガイド」という本を書きました。
開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
-
Amazon Location Service入門ワークショップ-トラッカー
トラッカーでデバイスの位置や移動履歴を追跡できます。 関連記事 Amazon L …
-
-
Amazon Glacierのプロビジョニングされた迅速取り出し容量をなぜか購入しました
過去1年ぐらいのAWSコストをCost Explorerで見てまして、10/10 …
-
-
LINE BOT AWARDS 2017に応募しました
LINEの友達追加QRです。 動作のご確認にどうぞ LINE BOT AWARD …
-
-
CloudFormation Lambda-backedカスタムリソースチュートリアルをやりました
チュートリアル: Amazon マシンイメージ ID を参照するの手順に従ってや …
-
-
API GatewayからLambdaを介さずにSNSトピックへ送信
やりたいこと APIリクエストをまずLambdaで受けて、SNSトピックへ送信す …
-
-
AWS Transit GatewayのVPCアタッチメント
構成 これぐらいの構成なら、VPCピアリングでいいのですが、Transit Ga …
-
-
共有AMIのコピー時にエラー「You do not have permission to access the storage of this ami」
他アカウントから共有されたAMIをコピーする際に、「You do not hav …
-
-
AWS Organizations EC2宣言型ポリシーを設定する
2024/12/1に発表されましたOrganizationsの宣言型ポリシーを設 …
-
-
Amazon Timestreamのサンプルデータベースを起動しました
マネジメントコンソールTimestreamにアクセスして、[データベースを作成] …
-
-
ある意味マネジメントコンソールで生成された署名付きURL
マネジメントコンソールにS3オブジェクトの[開く]というボタンがいつのまにか出来 …




