翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Lambda オーソライザーによるカスタムトークン検証
HealthImaging は、Lambda オーソライザーを使用するアーキテクチャを通じて OIDC サポートを実装し、お客様が独自のトークン検証ロジックを実装できるようにします。この設計により、OIDC 互換 ID プロバイダー (IdPs) の多様な環境とさまざまなトークン検証方法に対応して、トークンの検証方法とアクセス決定の適用方法を柔軟に制御できます。
認証のフロー
認証の仕組みの概要は次のとおりです。
-
クライアントが DICOMweb API を呼び出す: アプリケーションは選択した OIDC ID プロバイダーで認証し、署名付き ID トークン (JWT) を受け取ります。DICOMweb HTTP リクエストごとに、クライアントは認可ヘッダー (通常はベアラートークン) に OIDC アクセストークンを含める必要があります。リクエストがデータに到達する前に、HealthImaging は受信リクエストからこのトークンを抽出し、設定した Lambda オーソライザーを呼び出します。
-
ヘッダーは通常、 の形式に従います
Authorization: Bearer <token>。
-
-
初期検証: HealthImaging は、Lambda 関数を不必要に呼び出すことなく、明らかに無効または期限切れのトークンをすばやく拒否するために、アクセストークンクレームを検証します。HealthImaging は、Lambda オーソライザーを呼び出す前に、アクセストークン内の特定の標準クレームの初期検証を実行します。
-
iat(発行時): HealthImaging は、トークンの問題時間が許容範囲内であるかどうかをチェックします。 -
exp(有効期限): HealthImaging はトークンの有効期限が切れていないことを確認します。 -
nbf(時間前ではない): 存在する場合、HealthImaging は有効な開始時刻より前にトークンが使用されていないことを確認します。
-
-
HealthImaging は Lambda オーソライザーを呼び出します。最初のクレーム検証に合格すると、HealthImaging は追加のトークン検証をお客様が設定した Lambda オーソライザー関数に委任します。HealthImaging は、抽出されたトークンおよびその他の関連するリクエスト情報を Lambda 関数に渡します。Lambda 関数は、トークンの署名とクレームを検証します。
-
ID プロバイダーとの検証: Lambda には、ID トークンの署名をチェックし、より広範なトークン検証 (発行者、対象者、カスタムクレームなど) を実行し、必要に応じてそれらのクレームを IdP に対して検証するカスタムコードが含まれています。
-
オーソライザーはアクセスポリシーを返します。検証に成功すると、Lambda 関数は認証された使用に対する適切なアクセス許可を決定します。次に、Lambda オーソライザーは、付与される一連のアクセス許可を表す IAM ロールの amazon リソースネーム (ARN) を返します。
-
リクエストの実行: 引き受けた IAM ロールに必要なアクセス許可がある場合、HealthImaging はリクエストされた DICOMWeb リソースの返却に進みます。アクセス許可が不十分な場合、HealthImaging はリクエストを拒否し、適切なエラーレスポンスエラー (403 Forbidden) を返します。
注記
AWS HealthImaging サービスによって管理されていないオーソライザー Lambda 関数。 AWS アカウントで実行されます。お客様は、関数の呼び出しと実行時間に対して、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