文章
· 十二月 25, 2024 阅读大约需 2 分钟

在IRIS 2024.2 中使用 WebTerminal

IRIS 2024.2 版本包含一项变更(DP-432503),该变更要求Web Gateway最初连接到 IRIS 时所使用的用户(通常是 CSPSystem)必须对承载 REST web applicatioon 的dispatch类的数据库具备 READ 权限。

在不满足该条件的情况下,就会引发一个错误,这会向调用者返回一个 HTTP 404 状态码,而非预期的 HTTP 401 状态码。

显然,这个问题将在 2024.3 版本中修复,参考编号为 DP-432898 / ALI048:REST 登录端点将返回 401 HTTP 错误码而非 404,但作为持续交付(CD)版本,2024.2 不会获得维护版本修正。

解决方法是让 CSPSystem 用户对安装WebTerminal所在命名空间的数据库具备读权限。

下面是所需的步骤:

1. 创建一个新的资源 “%DB_WEBTERMINAL”,并设置 “WEBTERMINAL” 数据库使用该资源,而非 “%DB_% DEFAULT”。

2. 创建一个名为 “% DB_WEBTERMINAL” 的角色,该角色能让角色持有者对 “% DB_WEBTERMINAL” 资源具有读写(RW)访问权限。

3. 再创建另一个角色(我将其命名为 “DBread_WEBTERMINAL”),该角色仅赋予角色持有者对该资源的读(R)访问权限。

4. 为 “CSPSystem” 用户赋予 “DBread_WEBTERMINAL” 角色。这样可以解决 2024.2 版本存在的这个漏洞。

5. 编辑 “/terminalsocket” web application,并将 “%DB_WEBTERMINAL” 添加到 “应用程序角色(Application Roles)” 选项卡中。这一步骤是必要的,因为WebTerminal 最初是以 “UnknownUser” 身份运行其 websocket 进程的,并且甚至在切换为以已认证用户身份运行之前,就需要更新其数据库中的状态信息。

另一种简便单但不是安全的方式:

  • 创建一个具有读写(RW)公共权限的新安全资源 “%DB_WEBTERMINAL”,然后设置 “WEBTERMINAL” 数据库使用该资源,而非 “%DB_%DEFAULT”。

更多以及详细信息参见下面内容:https://github.com/intersystems-community/webterminal/issues/155

讨论 (0)1
登录或注册以继续