使用 Lambda 授權方進行自訂權杖驗證 - AWS HealthImaging

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 Lambda 授權方進行自訂權杖驗證

HealthImaging 透過使用 Lambda 授權方的架構實作 OIDC 支援,讓客戶能夠實作自己的權杖驗證邏輯。此設計可讓您靈活控制權杖的驗證方式,以及如何強制執行存取決策,適應 OIDC 相容身分提供者 (IdPs) 的各種環境,以及不同的權杖驗證方法。

身分驗證流程

以下是身分驗證在高階的運作方式:

  1. 用戶端呼叫 DICOMweb API:您的應用程式會向您選擇的 OIDC 身分提供者進行身分驗證,並接收已簽署的 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. 向身分提供者驗證:Lambda 包含自訂程式碼,用於檢查 ID 字符簽章、執行更廣泛的字符驗證 (例如發行者、對象、自訂宣告),以及在必要時針對 IdP 驗證這些宣告。

  5. 授權方傳回存取政策:驗證成功後,Lambda 函數會決定已驗證使用的適當許可。然後,Lambda 授權方會傳回 IAM 角色的 amazon 資源名稱 (ARN),代表要授予的一組許可。

  6. 請求執行:如果擔任的 IAM 角色具有必要的許可,HealthImaging 會繼續傳回請求的 DICOMWeb 資源。如果許可不足,HealthImaging 會拒絕請求並傳回適當的錯誤回應錯誤 (即 403 禁止)。

注意

授權方 lambda 函數不是由 AWS HealthImaging 服務管理。它會在您的 AWS 帳戶中執行。系統會分別向客戶收取函數叫用和執行時間的費用,以及其 HealthImaging 費用。

架構概觀

顯示工作流程的圖表:用戶端傳送字符、Lambda 授權方驗證、HealthImaging 程序請求

使用 Lambda 授權方的 OIDC 身分驗證工作流程

先決條件

存取字符要求

HealthImaging 要求存取權杖採用 JSON Web Token (JWT) 格式。許多身分提供者 (IDPs) 原生提供此字符格式,而其他身分提供者則允許您選取或設定存取權杖表單。在繼續整合之前,請確定您選擇的 IDP 可以發出 JWT 字符。

權杖格式

存取權杖必須是 JWT (JSON Web Token) 格式

必要的宣告
exp (過期時間)

指定字符何時失效的必要宣告。

  • 必須在目前的 UTC 時間之後

  • 當字符失效時表示

iat (發行時間)

指定權杖何時發出的必要宣告。

  • 必須在 UTC 的目前時間之前

  • 不得早於 UTC 目前時間前 12 小時

  • 這可有效強制執行最多 12 小時的字符生命週期

nbf (非時間之前)

指定可以使用字符的最早時間的選用宣告。

  • 如果存在,將由 HealthImaging 評估

  • 指定不得接受字符的時間

Lambda 授權方回應時間要求

HealthImaging 會對 Lambda 授權方回應強制執行嚴格的計時要求,以確保最佳的 API 效能。您的 Lambda 函數必須在 1 秒內傳回。

最佳實務

最佳化權杖驗證

  • 盡可能快取 JWKS (JSON Web 金鑰集)

  • 盡可能快取有效的存取權杖

  • 將對身分提供者的網路呼叫降至最低

  • 實作有效率的權杖驗證邏輯

Lambda 組態

  • Python 和 Node.js 型函數通常會更快速地初始化

  • 減少要載入的外部程式庫數量

  • 設定適當的記憶體配置,以確保一致的效能

  • 使用 CloudWatch 指標監控執行時間

OIDC 身分驗證啟用

  • 只有在建立新的資料存放區時,才能啟用 OIDC 身分驗證

  • API 不支援為現有資料存放區啟用 OIDC

  • 若要在現有資料存放區上啟用 OIDC,客戶必須聯絡 AWS Support