適用于 Azure API for FHIR 的 Azure Active Directory 身分識別設定

當您使用醫療保健資料時,請務必確保資料安全,且無法由未經授權的使用者或應用程式存取。 FHIR 伺服器會使用 OAuth 2.0 來確保此資料安全性。 使用Azure Active Directory保護Azure API for FHIR,這是 OAuth 2.0 識別提供者的範例。 本文提供 FHIR 伺服器授權的概觀,以及取得權杖來存取 FHIR 伺服器所需的步驟。 雖然這些步驟適用于任何 FHIR 伺服器和任何識別提供者,但我們將會逐步解說 Azure API for FHIR 作為 FHIR 伺服器,而 Azure Active Directory (Azure AD) 本文中的身分識別提供者。

存取控制概觀

為了讓用戶端應用程式能夠存取 Azure API for FHIR,它必須出示存取權杖。 存取權杖是已簽署的 Base64 編碼屬性集合, (宣告) ,可傳達用戶端身分識別和授與用戶端角色和許可權的相關資訊。

有許多方式可以取得權杖,但 Azure API for FHIR 並不關心權杖的取得方式,只要它是具有正確宣告的適當簽署權杖即可。

例如,例如,當您使用 授權碼流程時,存取 FHIR 伺服器會經歷下列四個步驟:

FHIR 授權

  1. 用戶端會將要求傳送至 /authorize Azure AD 的端點。 Azure AD 會將用戶端重新導向至登入頁面,使用者將會使用適當的認證進行驗證 (,例如使用者名稱和密碼或雙因素驗證) 。 請參閱 取得授權碼的詳細資料。 成功驗證時, 授權碼 會傳回給用戶端。 Azure AD 只會允許將此授權碼傳回至用戶端應用程式註冊中所設定的已註冊回復 URL。
  2. 用戶端應用程式會在 Azure AD 的端點交換 存取權杖/token 的授權碼。 當您要求權杖時,用戶端應用程式可能需要在應用程式密碼) (提供用戶端密碼。 請參閱 取得存取權杖的詳細資料。
  3. 用戶端向 Azure API for FHIR 提出要求,例如 GET /Patient ,以搜尋所有病患。 當用戶端提出要求時,它會在 HTTP 要求標頭中包含存取權杖,例如 Authorization: Bearer eyJ0e... ,其中 eyJ0e... 代表 Base64 編碼存取權杖。
  4. Azure API for FHIR 會驗證權杖是否包含權杖) 中適當的宣告 (屬性。 如果一切都已取出,它會完成要求,並將結果傳回 FHIR 套件組合給用戶端。

請務必注意,Azure API for FHIR 不會涉及驗證使用者認證,也不會發出權杖。 驗證和權杖建立是由 Azure AD 完成。 Azure API for FHIR 只會驗證權杖是否已正確簽署, (其為驗證) ,且其具有適當的宣告。

存取權杖的結構

快速醫療保健互通性資源的開發 (FHIR®) 應用程式通常牽涉到偵錯存取問題。 如果用戶端拒絕存取 Azure API for FHIR,瞭解存取權杖的結構,以及如何解碼來檢查權杖 (宣告) 權杖的內容,會很有用。

FHIR 伺服器通常會預期 JSON Web 權杖 (JWT,有時發音為 「jot」) 。 其中包含三個部分:

第 1 部分:標頭,如下所示:

    {
      "alg": "HS256",
      "typ": "JWT"
    }

第 2 部分:宣告 (承載) ,例如:

    {
     "oid": "123",
     "iss": "https://issuerurl",
     "iat": 1422779638,
     "roles": [
        "admin"
      ]
    }

第 3 部分:簽章,其計算方式是串連標頭的 Base64 編碼內容和承載,並根據標頭中指定的演算法來計算其密碼編譯雜湊 (alg) 。 伺服器將能夠從識別提供者取得公開金鑰,並驗證此權杖是由特定識別提供者所簽發,且尚未遭到竄改。

完整權杖是由 Base64 編碼 (這三個區段的實際 Base64 URL 編碼) 版本所組成。 這三個 . 區段會串連並分隔 (點) 。

權杖的範例會顯示為:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJvaWQiOiIxMjMiLCAiaXNzIjoiaHR0cHM6Ly9pc3N1ZXJ1cmwiLCJpYXQiOjE0MjI3Nzk2MzgsInJvbGVzIjpbImFkbWluIl19.gzSraSYS8EXBxLN_oWnFSRgCzcmJmMjLiuyu5CSpyHI

您可以使用 之類的 https://jwt.ms 工具來解碼和檢查權杖。 解碼權杖的結果為:

{
  "alg": "HS256",
  "typ": "JWT"
}.{
  "oid": "123",
  "iss": "https://issuerurl",
  "iat": 1422779638,
  "roles": [
    "admin"
  ]
}.[Signature]

取得存取權杖

如前所述,有數種方式可從 Azure AD 取得權杖。 其詳述于 Azure AD 開發人員檔中

使用下列其中一種驗證通訊協定:

例如,由於流程) 取得權杖,所以有其他變化 (。 如需詳細資訊,請參閱 Azure AD 檔 。 當您使用 Azure API for FHIR 時,有一些快捷方式可用來取得存取權杖 (,例如使用 Azure CLI進行偵錯) 。

下一步

在本檔中,您已瞭解使用 Azure AD 保護 Azure API for FHIR 存取權的一些基本概念。 如需如何部署 Azure API for FHIR 服務的詳細資訊,請參閱

FHIR® 是 HL7 的注冊商標,並搭配 HL7 的許可權使用。