你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

配置多个服务标识提供者

除了 Microsoft Entra ID 以外,还可以为 FHIR® 服务配置最多两个额外的标识提供者,无论该服务是已存在的服务还是新创建的服务。

标识提供者先决条件

标识提供者必须支持 OpenID Connect (OIDC),并且必须能够使用 fhirUser 声明、azpappid 声明以及具有 SMART on FHIR v1 范围scp 声明颁发 JSON Web 令牌 (JWT)。

使用 Azure 资源管理器启用其他标识提供者 (ARM)

smartIdentityProviders 元素添加到 FHIR 服务 authenticationConfiguration 以启用其他标识提供者。 smartIdentityProviders 元素是可选的。 如果省略它,则 FHIR 服务将使用 Microsoft Entra ID 对请求进行身份验证。

元素 类型 描述
smartIdentityProviders array 包含最多两个标识提供者配置的数组。 此元素为可选元素。
authority string 标识提供者令牌颁发机构。
applications 数组 标识提供者资源应用程序配置的数组。
clientId string 标识提供者资源应用程序(客户端)ID。
audience string 用于验证访问令牌 aud 声明。
allowedDataActions 数组 允许标识提供者资源应用程序执行的权限数组。
{
  "properties": {
    "authenticationConfiguration": {
      "authority": "string",
      "audience": "string",
      "smartProxyEnabled": "bool",
      "smartIdentityProviders": [
        {
          "authority": "string",
          "applications": [
            {
              "clientId": "string",
              "audience": "string",
              "allowedDataActions": "array"
            }
          ]
        }
      ]
    }
  }
}

配置 smartIdentityProviders 数组

如果不需要除 Microsoft Entra ID 之外的任何标识提供者,请将 smartIdentityProviders 数组设置为 null,或在预配请求中省略它。 否则,请在数组中至少包含一个有效的标识提供者配置对象。 最多可以配置两个额外的标识提供者。

指定 authority

必须为你配置的每个标识提供者指定 authority 字符串。 字符串 authority 是为标识提供者颁发访问令牌的令牌颁发机构。 如果 authority 字符串无效或不正确,FHIR 服务将拒绝请求并提供 401 Unauthorized 错误代码。

在发出预配请求之前,请通过检查 openid-connect 配置终结点来验证 authority 字符串。 将 /.known/openid-configuration 追加到 authority 字符串末尾,并将其粘贴到浏览器中。 应会看到预期的配置。 如果没有,则字符串有问题。

示例:

https://yourIdentityProvider.com/authority/v2.0/.well-known/openid-configuration

配置 applications 数组

必须至少包含一个应用程序配置,并且最多可以在 applications 数组中添加 25 个应用程序。 每个应用程序配置都具有验证访问令牌声明的值,以及定义应用程序访问 FHIR 资源的权限的数组。

使用 clientId 字符串标识应用程序

标识提供者使用名为 clientId 字符串(或应用程序 ID)的唯一标识符定义应用程序。 FHIR 服务通过针对 clientId 字符串检查 authorized party (azp) 或 application id (appid) 声明来验证访问令牌。 如果 clientId 字符串和令牌声明不完全匹配,FHIR 服务将拒绝请求并提供 401 Unauthorized 错误代码。

使用 audience 字符串验证访问令牌

访问令牌中的 aud 声明会标识令牌的预期接收方。 字符串 audience 是接收方的唯一标识符。 FHIR 服务通过针对 aud 声明检查 audience 字符串来验证访问令牌。 如果 audience 字符串和 aud 声明不完全匹配,FHIR 服务将拒绝请求并提供 401 Unauthorized 错误代码。

使用 allowedDataActions 数组指定权限

allowedDataActions 数组中至少包含一个权限字符串。 可以包含任何有效的权限字符串。 请避免重复。

有效的权限字符串 描述
读取 允许资源 GET 请求。

后续步骤

使用 Azure Active Directory B2C 授予对 FHIR 服务的访问权限

排查标识提供者配置问题

注意

FHIR® 是 HL7 的注册商标,经 HL7 许可使用。