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

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

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

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

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

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

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

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

  7. 接続が確立され、カスタムオーソライザー Lambda が最初に呼び出された後、MQTT オペレーションなしでアイドル状態の接続では、次の呼び出しが最大 5 分間遅延する可能性があります。その後、それ以降の呼び出しはカスタムオーソライザー Lambda の更新間隔に従います。このアプローチにより、 の Lambda 同時実行数の制限を超える可能性のある過剰な呼び出しを防ぐことができます AWS アカウント。

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

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

注記

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

注記

カスタムオーソライザーの Lambda 関数のタイムアウト制限は 5 秒です。