我设置了 z/OSMF 并在尝试访问 url 时收到此错误https://my.zos.com/zosmf/restjobs/jobs
。
{ “errorID”:“IZUG846W”,“errorMsg”:“IZUG846W:从远程站点接收到 z/OSMF REST 服务的 HTTP 请求。但是,请求被拒绝,因为远程站点 \“\” 不允许访问目标系统 \“my.zos.com\” 上的 z/OSMF 服务器 \“IZUSVR\”。“}
错误消息没有提供足够的信息来确定根本原因。其他人遇到过这个问题吗?
答案1
更好的选择是,并且我相信这是默认设置,保持 CSRF_SWITCH(ON),这需要设置白名单,以便只有白名单中的主机才能发出请求。
白名单是 RACFZMFAPLA
资源类配置文件,格式为IZUDFLT.ZOSMF.REST.<zosmf-service>.<reversed-host-name>
。所有此类配置文件都必须使用 UACC(NONE) 定义,并允许对服务器 ID 进行读取访问(默认为 IZUSVR)。
示例配置文件IZUDFLT.ZOSMF.REST.*.com.whoa.test.myserver
将允许来自主机名 myserver.test.whoa.com 的入站跨源请求。来自直接访问 z/OSMF 主机的 Web 浏览器的同源请求不受 CSRF 保护。
答案2
如果您自己生成 REST 请求,则可以添加标头 X-CSRF-ZOSMF-HEADER 并添加任意值来解决这个问题。例如,Firefox postman 允许您添加标头我在 Postman 中看到了之前和之后的图片
处理挑剔的 z/OSMF 服务器的另一种好方法是通过 CURL 驱动 API
curl -k -H “X-CSRF-ZOSMF-HEADER:虚拟” -u:https://:/zosmf/restfiles/ds?dslevel=T*
在 zowe.org 中,我们提供了一组不坚持标头并抽象出 z/OSMF 的一些细微差别的 REST API,以及一个命令行界面和一个漂亮的 JES 资源管理器以及几个用于在浏览器中运行的数据集和 USS 文件的文件资源管理器,所以如果您有时间,请浏览 zowe.org 并让我们知道它是否有帮助。
干杯,
乔
答案3
默认情况下,z/OSMF 配置为安全模式,以免意外打开安全漏洞。提供的消息表明远程系统(REST 调用的源)可能不安全。这意味着请求被拒绝。
避免此问题的一种方法是修改IZUPRMnn
初始化 z/OSMF 的成员。参数:
CSRF_SWITCH(ON)
可以将其更改为默认值,
CSRF_SWITCH(OFF)
以禁用跨站点脚本安全机制。
可以找到 z/OSMF 的参数这里。
下面包含了特定的条目CSRF_SWITCH
以供参考,并且基于 z/OS 2.3。
CSRF_SWITCH(开|关)
指示是否为 REST API 请求启用跨站点请求伪造 (CSRF) 自定义标头检查。默认情况下,CSRF_SWITCH 设置为 ON,以确保您的安装受到保护,免受 CSRF 攻击。但是,在某些有限情况下(例如测试),您可以选择通过设置 CSRF_SWITCH=OFF 暂时禁用 CSRF 检查。但是,建议您保持此设置处于启用状态以防止 CSRF 攻击。有关更多信息,请参阅 IBM z/OS 管理工具编程指南。默认值:ON
可以找到有关 z/OSMF 配置的更多信息这里