在 SMART (FHIR) 应用程序中:应用程序能否验证 EHR?
In a SMART (FHIR) Application: Can the Application authenticate the EHR?
我非常清楚使用 SMART 应用程序的 EHR 如何验证来自 SMART 应用程序的请求是合法地来自真实的 SMART 应用程序。但是,我没有看到 SMART 应用程序如何知道来自 EHR 的请求是合法请求。 SMART 应用程序是否有一种标准方法可以验证来自 EHR 的传入请求实际上是来自 SMART 应用程序已注册的 EHR 的请求?换句话说,是否有一种方法内置于 SMART 规范中,允许 SMART 应用程序限制对经过身份验证的注册 EHR 的使用? OAUTH2 协议中是否有确保这一点的步骤?
我正在看这里的 SMART 授权指南:
http://docs.smarthealthit.org/authorization/
和 Cerner tutorial/demo 在这里:
http://engineering.cerner.com/smart-on-fhir-tutorial/
我们在这里讨论的是 "EHR Launch" 流程,其中应用已由 EHR 启动。此启动包括一个 iss
参数,指示(据说!)启动启动的 EHR,以及一个不透明的 launch
参数。
此时,应用无法对请求进行身份验证,但它可以:
- 检查以确保
iss
值与其已知的 EHR 的发行者匹配(并且它具有 client_id
)
- 通过重定向到 EHR 继续启动。如果启动成功,则启动 ID 有效。另一方面,如果 EHR 无法识别启动 ID 或未将其与当前应用程序的
client_id
相关联,则启动失败。
这是一种验证 EHR 身份的功能性方法:实际上,应用程序使用启动协议询问 EHR 此启动是否有效。
(如果您认为此协议存在重要的功能或安全漏洞,请在 chat.fhir.org 上提出问题!)
我非常清楚使用 SMART 应用程序的 EHR 如何验证来自 SMART 应用程序的请求是合法地来自真实的 SMART 应用程序。但是,我没有看到 SMART 应用程序如何知道来自 EHR 的请求是合法请求。 SMART 应用程序是否有一种标准方法可以验证来自 EHR 的传入请求实际上是来自 SMART 应用程序已注册的 EHR 的请求?换句话说,是否有一种方法内置于 SMART 规范中,允许 SMART 应用程序限制对经过身份验证的注册 EHR 的使用? OAUTH2 协议中是否有确保这一点的步骤?
我正在看这里的 SMART 授权指南: http://docs.smarthealthit.org/authorization/
和 Cerner tutorial/demo 在这里: http://engineering.cerner.com/smart-on-fhir-tutorial/
我们在这里讨论的是 "EHR Launch" 流程,其中应用已由 EHR 启动。此启动包括一个 iss
参数,指示(据说!)启动启动的 EHR,以及一个不透明的 launch
参数。
此时,应用无法对请求进行身份验证,但它可以:
- 检查以确保
iss
值与其已知的 EHR 的发行者匹配(并且它具有client_id
) - 通过重定向到 EHR 继续启动。如果启动成功,则启动 ID 有效。另一方面,如果 EHR 无法识别启动 ID 或未将其与当前应用程序的
client_id
相关联,则启动失败。
这是一种验证 EHR 身份的功能性方法:实际上,应用程序使用启动协议询问 EHR 此启动是否有效。
(如果您认为此协议存在重要的功能或安全漏洞,请在 chat.fhir.org 上提出问题!)