

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 在启用 SMART on FHIR 的数据存储中使用细粒度授权 HealthLake
<a name="reference-smart-on-fhir-fine-grained-authorization"></a>

仅凭@@ [作用域](reference-smart-on-fhir-oauth-scopes.md#smart-on-fhir-scopes-rest)并不能为你提供必要的具体信息，说明请求者有权在数据存储中访问哪些数据。在授予对启用 FHIR 的 SMART 数据存储的访问权限时，使用细粒度授权可以提高特异性。 HealthLake 要使用细粒度授权，请在`FineGrainedAuthorizationEnabled`请求的`IdentityProviderConfiguration`参数`True`中设置等于。`CreateFHIRDatastore`

如果您启用了细粒度授权，则您的授权服务器会返回一个`fhirUser`范围`id_token`以及访问令牌。这允许客户端应用程序检索有关用户的信息。客户端应用程序应将`fhirUser`声明视为代表当前用户的 FHIR 资源的 URI。这可以是 `Patient`、`Practitioner` 或 `RelatedPerson`。授权服务器的响应还包括一个`user/`范围，该范围定义了用户可以访问哪些数据。这使用为与 FHIR 资源特定作用域相关的作用域定义的语法：

```
user/(fhir-resource | '*').('read' | 'write' | '*')
```

以下是如何使用细粒度授权来进一步指定与数据访问相关的 FHIR 资源类型的示例。
+ 何时`fhirUser`是`Practitioner`，细粒度的授权决定了用户可以访问的患者集合。只有患者以`fhirUser`全科医生的`fhirUser`身份提及的患者才允许进入。

  ```
  Patient.generalPractitioner : [{Reference(Practitioner)}]
  ```
+ 何时`fhirUser`为`Patient`或，请求中提`RelatedPerson`及的患者与请求中提及的患者不同`fhirUser`，细粒度的授权决定了所请求患`fhirUser`者的访问权限。如果请求的`Patient`资源中指定了关系，则允许访问。

  ```
  Patient.link.other : {Reference(Patient|RelatedPerson)}
  ```