Fiware AuthZForce error: "AZF domain not created for application"

Fiware AuthZForce error: "AZF domain not created for application"

我正在尝试通过 Docker 使用 KeyRock idm、Wilma PEP-Proxy 和 AuthZForce PDP 来保护 Orion Context Broker。目前,1 级安全性运行良好,我可以拒绝未登录用户的访问,但我在尝试添加 2 级时在 Wilma 上遇到此错误。

AZF domain not created for application <applicationID>

这是我在 Wilma 的 config.js 文件中的 azf 配置:

config.azf = {
    enabled: true,
    protocol: 'http',
    host: 'azfcontainer',
    port: 8080,
    custom_policy: undefined
};

这就是我在 KeyRock 上设置访问控制配置的方式:

# ACCESS CONTROL GE
ACCESS_CONTROL_URL = 'http://azfcontainer:8080'
ACCESS_CONTROL_MAGIC_KEY = None

我已经在 Keyrock 上创建了自定义策略,但是 AuthZForce 日志没有显示来自 KeyRock 或 Wilma 的任何请求,因此没有在 PDP 上创建域。我已经检查过所有容器都可以看到并相互访问,并且所有端口都已启动。我可能缺少一些配置。

这些是我正在使用的版本:

keyrock=5.4.1
wilma=5.4
autzforce=6.0.0/5.4.1

这个问题与 相同,但即使使用显示的 AuthZForce GE 配置,我的问题仍然存在。

我发现当 AuthZForce 不是 在 PEP 代理 后面并且因此变量 ACCESS_CONTROL_MAGIC_KEY未修改(默认为None)。

似乎horizon在需要连接到openstack_dashboard/local/local_settings.py时同时读取ACCESS_CONTROL_URL和ACCESS_CONTROL_MAGIC_KEY参数AuthZForce。理论上,第二个参数是可选的(它为PEP Proxy引入了一个'X-Auth-Token' header),但是如果horizon检测到它是None([=47中的默认值) =]) 或一个空字符串,日志显示一个警告和 returns 立即从函数 "policyset_update" in openstack_dashboard/fiware_api/access_control_ge.py。因此与 AuthZForce 的通信永远不会发生。

解决这个问题更简单的方法是写一些文本作为魔术键:openstack_dashboard/local/local_settings.py:

# ACCESS CONTROL GE
ACCESS_CONTROL_URL = 'http://authzforce_url:port'
ACCESS_CONTROL_MAGIC_KEY = '1234567890' # DO NOT LEAVE None OR EMPTY

因此,将生成一个 'X-Auth-Token' header,但当 AuthZForce 不在 PEP 代理后面时,它不应该影响通信(header 只是忽略)。

注意:修改时记得删除缓存的字节码文件"openstack_dashboard/local/local_settings.pyc",以确保重启horizon服务后更新新配置。

PS: 我向 https://github.com/ging/horizon 发送了拉取请求,并进行了简单的修改,解决了问题。