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認定資格試験テキスト AWS認定AIプラクティショナー」という本を書きました。
「AWS教科書 AWS認定デベロッパーアソシエイト テキスト&問題集 」という本を書きました。
「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
「AWSではじめるLinux入門ガイド」という本を書きました。
開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
関連記事
-
-
リザーブドインスタンス推奨事項を確認した
マネジメントコンソールで[AWSコスト管理]カテゴリの[AWS Cost Exp …
-
-
EC2 Instance Connect エンドポイントの作成
このブログのSystems Managerは機能としてセッションマネージャーしか …
-
-
AWS EC2でAMI(Amazon Machine Image)を作成しておく
前回まででひとまずRedmineを構築するところまで出来たので、念のためスナップ …
-
-
AWS IAMのMFA「エンティティは既に存在しています」に対応しました
エンティティは既に存在しています MFA Device entity at th …
-
-
Amazon Glacierでボールトロックポリシーの作成開始をしてみました
Glacierを単体で使用することもそうそうないので、確認しました。 まずボール …
-
-
CodeWhisperer(Visual Studio Code)でセキュリティスキャン
CodeWhispererのセキュリティスキャンを実行してみました。 画面下の[ …
-
-
iPad ProのWorking CopyでAWS CodeCommitのリポジトリを使う
iPad Proを導入しましたので、原稿執筆や校正でフル活用しようと思いまして。 …
-
-
AWS EC2 Amazon Linux にEC-CUBE3をnginx+MySql環境へインストール(手順検証中)
EC2インスタンスを作成する 少し古い記事で恐縮ですが試したい事があるのでAWS …
-
-
Amazon SageMakerプロジェクトを使用してMLパイプラインを構築
SageMakerプロジェクトの作成 SageMaker Studioの左ナビゲ …
-
-
「JAWS-UG in AWS Cloud Roadshow 2017 大阪」で運営をしました
AWS Cloud Roadshow 2017 大阪のナイトイベントで、「JAW …




