此外,在以前的版本中,您可以定义您的 FHIR 服务器接受通过 OAuth 2.0 发送的请求(例如,用于 FHIR 客户端上的 SMART),但在前不久发布的 v2024.3 中,有一项新功能可以更轻松地实现这一点,即OAuth FHIR 客户端快速启动(OAuth FHIR Client QuickStart)。
.png)
.png)
此外,在以前的版本中,您可以定义您的 FHIR 服务器接受通过 OAuth 2.0 发送的请求(例如,用于 FHIR 客户端上的 SMART),但在前不久发布的 v2024.3 中,有一项新功能可以更轻松地实现这一点,即OAuth FHIR 客户端快速启动(OAuth FHIR Client QuickStart)。
.png)
.png)
InterSystems API 管理器(IAM)是 InterSystems IRIS 数据平台的核心组件,提供集中式 API 管理,重点强调安全性。IAM 简化了从创建到退出的整个 API 生命周期,并提供了一个开发人员门户,便于发现和集成 API。访问控制功能允许管理员定义精确的权限,IAM 与 IRIS 数据平台无缝集成,增强了数据管理和集成能力。
IAM 的功能包括
使用案例: 本报告中的用例是身份和访问管理。
符合 OAuth 2.0 标准的身份验证和授权,使用 IAM 确保 FHIR 服务器的安全。
在本文档中,您将了解如何使用 InterSystems API Manager 通过 OAuth 2.0 确保 FHIR 服务器的安全。OAuth 2.0 是一种广泛使用的授权标准,可使应用程序访问 FHIR 服务器上受保护的资源。
大家好,现在我想继续我们之前讨论过的话题
使用 Postman 测试 InterSystems FHIR 存储库的 OAuth2.0 - 第一部分
.png)
问题1:我的client_id和client_secret是从哪里来的?
简短回答:身份验证服务器(Authentication Server)。
如果没有身份验证服务器,可按以下方法设置一个
.png)
提供主机名(主机必须支持 Https)、至少 1 种大类型(这里我们选择客户端凭证)和 SSL/TSL 配置
.png)
输入作用域(这里我们输入user/*.read和user/ *. write,这是基于 FHIR 服务器(资源服务器)支持的作用域)。万一我们遗漏了某些作用域,请检查 "允许不支持的作用域(Allow unsupported scope)"。
.png)
JWT 设置选择 RS256(这只是一个示例,您可以选择适合您架构的设置)
.png)
将生成令牌类(Generate token class)更改为%OAuth2.Server.JWT。如果需要,还可以更新命名空间。
.png)
保存(Save)设置
问题 2:如何查看身份验证服务器的 client_id 和 client_secret?
简短回答: 设置 OAuth2.0 客户端(如果没有)并创建一个客户端
以下是设置 OAuth2.0 客户端的步骤。
.png)
如果要从 x509 证书/密钥生成JWT,对%SYS.X509Credentials的任何操作(包括读取)都需要 %Admin_Secure 资源上的 U。之所以需要 %Admin_Secure,是因为 %SYS.X509Credentials 是持久的,这样做是为了防止所有用户访问私钥。
如果 %Admin_Secure 资源在运行时不可用,可以使用以下变通方法。
在查看 JWT 生成代码时,我发现 JWT 代码仅利用 %SYS.X509Credentials 作为 PrivateKey、PrivateKeyPassword 和 Certificate 的运行时数据源。作为一种变通方法,您可以使用 X.509 接口的运行时非持久化实现,只公开这些属性。如果要使用互操作性,证书/PK 可以存储在凭证中,以便安全访问:
Class User.大家好,又是我来分享我最近的学习心得了。
最近,我正在学习如何为 InterSystems FHIR 资源库设置 OAuth2 身份验证。我发现以下文章非常好,而且很容易理解。
使用 IRIS for Health 启动 FHIR EHR 的 SMART
在 IRIS for Health 上构建 FHIR 资源库 + OAuth2 授权服务器/资源服务器配置》第 2 部分
对我来说,作为一个对 OAuth2.0 没有太多了解的用户。我认为,在了解整个 OAuth2.0 环境之前,从纯粹的用户角度来看(它是什么、我需要哪些参数、预期输出是什么),理解如何设置整个 OAuth2.0 环境是相当困难的。在这里,我们使用 Postman 作为客户端。
如果你想有一个 OAuth 的测试环境,可以试试下面的 dockers
workshop-iris-oauth2 或本文中的 docker在 IRIS for Health 上构建 FHIR 资源库 + OAuth2 授权服务器/资源服务器配置 第 1 部分
在本文中,我在本地计算机上设置了一个支持 HTTPS 的 InterSystems FHIR 资源库 。(根据我的观察,要使 InterSystems OAuth 正常工作,资源服务器必须支持 HTTPS😑😐。)
.png)
因此,让我们从简单的开始。
什么是 JWT?
JWT (JSON Web Token,JSON 网络令牌)是一种开放标准(RFC 7519),它提供了一种轻量级、紧凑、自足的方法,用于在双方之间安全地传输信息。它常用于网络应用程序中的身份验证、授权和信息交换。
JWT 通常由三部分组成:
1.JOSE(JSON Object Signing and Encryption,JSON 对象签名和加密)标头
2.有效载荷
3.签名
这些部分以 Base64Url 格式编码,并用点(.)分隔。
JWT 的结构
标题
{ "alg": "HS256", "typ": "JWT"}
有效载荷
{"sub": "1234567890", "name": "John Doe", "iat": 1516239022}签名:
签名用于验证 JWT 的发件人是否为其本人,并确保信息未被篡改。
创建签名
1. base64 编码报头和有效载荷。
2.使用秘钥(对于对称算法,如 HMAC)或私钥(对于非对称算法,如 RSA)应用签名算法(如 HMAC SHA256 或 RSA)。
3.对结果进行 Base64Url 编码,以获得签名。
JWT 样本。查看JWT 内容
在过去的几个月里,我一直在从事 SMART on FHIR EHR Launch 的工作,使用 CSIRO 的两个开源应用程序:SMART-EHR-Launcher 和 SMART 表单应用程序来测试 IRIS for Health 的功能。这段旅程非常有趣,我非常感谢能有机会参与这项任务并探索 IRIS for Health 的更多潜力。
在 HL7 AU FHIR Connectathon 上成功演示了多个外部 SMART 应用程序的无缝启动后,我很高兴能与社区分享我的心得。我希望我的见解能帮助其他人更快地开始类似的项目。
这项任务涉及使用 SMART-EHR-Launcher 作为 EHR 来启动 SMART 表单应用程序。同时,IRIS for Health 被用作 EHR 的 FHIR 资源库,其 OAuth2 服务器被用作授权服务器。
在进入激动人心的时刻之前,让我们先仔细了解一下 SMART on FHIR 和 SMART on FHIR EHR 启动仪式。让我们问问我们的好朋友 ChatGPT 和 豆包。
什么是 SMART on FHIR?

SMART on FHIR 是一种用于开发医疗保健应用程序的平台,旨在实现医疗保健系统之间的互操作性、安全性和可扩展性。