カスタム認証ワークフローについて - AWS IoT Core

カスタム認証ワークフローについて

カスタム認証を使用すると、オーソライザーリソースを使用してクライアントを認証および承認する方法を定義できます。  各オーソライザーには、カスタマー管理の Lambda 関数への参照、デバイスの認証情報を検証するためのオプションのパブリックキー、および追加の設定情報が含まれています。次の図は、 AWS IoT Core でのカスタム認証の承認ワークフローを示しています。

AWS IoT Core カスタム認証と承認ワークフロー

次のリストでは、カスタム認証および承認ワークフローの各ステップについて説明します。

  1. デバイスは、サポートされているいずれかの デバイス通信プロトコル を使用して、お客様の AWS IoT Core データエンドポイントに接続します。デバイスは、リクエストのヘッダーフィールドまたはクエリパラメータ (HTTP Publish または MQTT over WebSocket プロトコルの場合)、または MQTT CONNECT メッセージのユーザー名とパスワードフィールド (MQTT および MQTT over WebSockets プロトコルの場合) で認証情報を渡します。

  2. AWS IoT Core は、次の 2 つの条件のいずれかをチェックします。

    • 受信リクエストはオーソライザーを指定します。

    • リクエストを受信する AWS IoT Core データエンドポイントには、デフォルトのオーソライザーが設定されています。

    AWS IoT Core がこれらのいずれかの方法でオーソライザーを見つけた場合、 AWS IoT Core はオーソライザーに関連付けられた Lambda 関数をトリガーします。

  3. (オプション) トークン署名を有効にしている場合、 AWS IoT Core は、Lambda 関数をトリガーする前に、オーソライザーに保存されているパブリックキーを使用してリクエストの署名を検証します。検証が失敗した場合、 AWS IoT Core は Lambda 関数を呼び出さずにリクエストを停止します。 

  4. Lambda 関数は、リクエスト内の認証情報と接続メタデータを受け取り、認証の可否を判断します。

  5. Lambda 関数は、認証の可否の判断の結果と、接続で許可されるアクションを指定する AWS IoT Core ポリシードキュメントを返します。Lambda 関数は、Lambda 関数を呼び出して AWS IoT Core がリクエストの認証情報を再検証する頻度を指定する情報も返します。

  6. AWS IoT Core は、Lambda 関数から受け取ったポリシーに照らして、接続のアクティビティを評価します。

スケーリングに関する考慮事項

Lambda 関数はオーソライザーの認証と承認を処理するため、関数は Lambda の料金とサービスの制限 (同時実行率など) の対象となります。Lambda の料金の詳細については、Lambda の料金を参照してください。Lambda 関数の応答の refreshAfterInSeconds および disconnectAfterInSeconds パラメータを調整することで、Lambda 関数の負荷を管理できます。Lambda 関数のレスポンスの内容の詳細については、Lambda 関数の定義 を参照してください。

注記

署名を有効にしておくと、認識されないクライアントによる Lambda の過度なトリガーを防ぐことができます。オーソライザーで署名を無効にする前に、これを考慮してください。