Lambda オーソライザーによるカスタムトークン検証 - AWS HealthImaging

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

Lambda オーソライザーによるカスタムトークン検証

HealthImaging は、Lambda オーソライザーを使用するアーキテクチャを通じて OIDC サポートを実装し、お客様が独自のトークン検証ロジックを実装できるようにします。この設計により、OIDC 互換 ID プロバイダー (IdPs) の多様な環境とさまざまなトークン検証方法に対応して、トークンの検証方法とアクセス決定の適用方法を柔軟に制御できます。

認証のフロー

認証の仕組みの概要は次のとおりです。

  1. クライアントが DICOMweb API を呼び出す: アプリケーションは選択した OIDC ID プロバイダーで認証し、署名付き ID トークン (JWT) を受け取ります。DICOMweb HTTP リクエストごとに、クライアントは認可ヘッダー (通常はベアラートークン) に OIDC アクセストークンを含める必要があります。リクエストがデータに到達する前に、HealthImaging は受信リクエストからこのトークンを抽出し、設定した Lambda オーソライザーを呼び出します。

    1. ヘッダーは通常、 の形式に従いますAuthorization: Bearer <token>

  2. 初期検証: HealthImaging は、Lambda 関数を不必要に呼び出すことなく、明らかに無効または期限切れのトークンをすばやく拒否するために、アクセストークンクレームを検証します。HealthImaging は、Lambda オーソライザーを呼び出す前に、アクセストークン内の特定の標準クレームの初期検証を実行します。

    1. iat (発行時): HealthImaging は、トークンの問題時間が許容範囲内であるかどうかをチェックします。

    2. exp (有効期限): HealthImaging はトークンの有効期限が切れていないことを確認します。

    3. nbf (時間前ではない): 存在する場合、HealthImaging は有効な開始時刻より前にトークンが使用されていないことを確認します。

  3. HealthImaging は Lambda オーソライザーを呼び出します。最初のクレーム検証に合格すると、HealthImaging は追加のトークン検証をお客様が設定した Lambda オーソライザー関数に委任します。HealthImaging は、抽出されたトークンおよびその他の関連するリクエスト情報を Lambda 関数に渡します。Lambda 関数は、トークンの署名とクレームを検証します。

  4. ID プロバイダーとの検証: Lambda には、ID トークンの署名をチェックし、より広範なトークン検証 (発行者、対象者、カスタムクレームなど) を実行し、必要に応じてそれらのクレームを IdP に対して検証するカスタムコードが含まれています。

  5. オーソライザーはアクセスポリシーを返します。検証に成功すると、Lambda 関数は認証された使用に対する適切なアクセス許可を決定します。次に、Lambda オーソライザーは、付与される一連のアクセス許可を表す IAM ロールの amazon リソースネーム (ARN) を返します。

  6. リクエストの実行: 引き受けた IAM ロールに必要なアクセス許可がある場合、HealthImaging はリクエストされた DICOMWeb リソースの返却に進みます。アクセス許可が不十分な場合、HealthImaging はリクエストを拒否し、適切なエラーレスポンスエラー (403 Forbidden) を返します。

注記

AWS HealthImaging サービスによって管理されていないオーソライザー Lambda 関数。 AWS アカウントで実行されます。お客様は、関数の呼び出しと実行時間に対して、HealthImaging 料金とは別に課金されます。

アーキテクチャの概要

ワークフローを示す図: クライアントがトークンを送信、Lambda オーソライザーが検証、HealthImaging プロセスリクエスト

Lambda オーソライザーを使用した OIDC 認証ワークフロー

前提条件

アクセストークンの要件

HealthImaging では、アクセストークンが JSON Web Token (JWT) 形式である必要があります。多くの ID プロバイダー (IDPs ではアクセストークンフォームを選択または設定できます。統合を進める前に、選択した IDP が JWT トークンを発行できることを確認します。

トークンの形式

アクセストークンは JWT (JSON ウェブトークン) 形式である必要があります

必要な請求
exp (有効期限)

トークンがいつ無効になるかを指定する必須クレーム。

  • UTC の現在の時刻より後である必要があります

  • トークンが無効になったときを表します

iat (発行先)

トークンの発行日時を指定する必須クレーム。

  • UTC の現在の時刻より前である必要があります

  • UTC の現在の時刻より 12 時間前であってはなりません

  • これにより、トークンの最大有効期間は 12 時間になります。

nbf (以前ではありません)

トークンを使用できる最も早い時刻を指定するオプションクレーム。

  • 存在する場合、HealthImaging によって評価されます

  • トークンを受け入れない時間を指定します。

Lambda オーソライザーの応答時間の要件

HealthImaging は、最適な API パフォーマンスを確保するために、Lambda オーソライザーレスポンスに厳格なタイミング要件を適用します。Lambda 関数は 1 秒以内に を返す必要があります

ベストプラクティス

トークン検証の最適化

  • 可能であれば JWKS (JSON ウェブキーセット) をキャッシュする

  • 可能な場合は有効なアクセストークンをキャッシュする

  • ID プロバイダーへのネットワーク呼び出しを最小限に抑える

  • 効率的なトークン検証ロジックを実装する

Lambda 設定

  • Python および Node.js ベースの関数は通常、より高速に初期化されます。

  • ロードする外部ライブラリの量を減らす

  • 一貫したパフォーマンスを確保するために適切なメモリ割り当てを設定する

  • CloudWatch メトリクスを使用して実行時間をモニタリングする

OIDC 認証の有効化

  • OIDC 認証は、新しいデータストアを作成する場合にのみ有効にできます

  • 既存のデータストアの OIDC の有効化は API ではサポートされていません

  • 既存のデータストアで OIDC を有効にするには、 サポートに連絡する必要があります AWS